2014-03-19 3 views
0

나는 atm과 비슷한 것처럼 보이는이 작품을 가지고 있지만 내 문제는 균형을 업데이트하고 싶지만 나는 위선적이다. 예를 들어, 먼저 "0"을주는 잔액을 확인한 다음, "200"을 입금하면 잔액을 다시 확인할 때 "100"을 인출하려면 "200"을 입력하고 내가 균형을 점검 할 때 "100"을 주어야합니다. 하지만 난 함수의 값을 전달하는 문제가 있습니다. 여기 내 일이있다. 도와주세요. 오, 그건 그렇고, DEV C를 사용하여 메신저Turbo C의 가치 전달 기능

#include <stdio.h> 
#include <conio.h> 
#include <stdlib.h> 

// Declaring Functions that exist in the program. 

    int menu(); 

// End 

// Main method at top, just to help with readability. And it can use the functions since we have already told main they exist. 
    int main() 
    { 
    int a = 0; 
    int option; 
    int atmDeposit(); 
    int atmWithdrawal(int balance); 
    int atmCheck(int z); 

    system("cls"); 
    do 
    { 
     option = menu(); 
     switch(option) 
     { 
      case 1: 
       atmDeposit(); 
       break; 
      case 2: 
       atmWithdraw(a); 
       break; 
      case 3: atmCheck(a); 
       break; 
      case 4: 
       printf("\nGoodbye!"); 
       system("pause"); 
       exit(0); 
      default: 
       printf("\nInvalid!\n"); 
       break; 
     } 
    } 
    while (option != 4); 

    getch(); 
    return 0; 
} 

int menu() 
{ 
    int op; 
    system("cls"); 

    printf("What do you want to do?: \n"); 
     printf("1 - Deposit\n"); 
     printf("2 - Withdraw\n"); 
     printf("3 - Check Balance\n"); 
     printf("4 - Exit\n\n"); 

     printf("Enter Choice: "); 

     scanf("%d",&op); 
    return op; 

} 
// End 

// to check balance 
int atmCheck(int z) 
{ 

    printf("\nYour Balance is P%d\n",z); 
    system("pause"); 
    return z; 
} 
// End check balance 

// to Deposit 
int atmDeposit() 
{ 
    int deposit, a=0; 

    printf("\nHow much money do you want to deposit?: P"); 
    scanf("%d", &deposit); 

    a += deposit; 

    printf("%d",a); 
    system("pause"); 


    return a; 
} 
// end deposit 

// to withdraw 
int atmWithdraw(int balance) 
{ 
    int withdraw; 

    printf("\nHow much money do you want to withdraw?: P"); 
    scanf("%d", &withdraw); 

    balance -= withdraw; 
    printf("%d",balance); 
    system("pause"); 

    return balance; 
} 
// end withdraw 
+0

입금 후 잔액을 확인할 때 200을 제공합니까? 그것은 나에게 0을 준다. –

답변

0

여기에 몇 가지 잘못이 있습니다. 우선, 귀하의 인출 및 예금 기능에 사용 된 변수는 해당 기능에만 범위가 제한됩니다. 따라서 다음에 사용자에게 선택 사항 제출 및 조치 수행을 요청하면 마지막으로 할당 된 값이 손실됩니다.

main에 선언 된 변수 a을 사용하여 잔액을 저장 한 다음 다른 기능에서 처리 할 수 ​​있습니다. 그러나 변수가 main에 선언 된 경우 함수이기도하지만 다른 함수에서는 인식되지 않습니다. 그래서, 당신과 같이, main 외부에서 선언해야합니다

int menu(); 
int a = 0; 

int main() 
{ 
... 
} 

다음으로, 당신의 atmDeposit 기능에, 당신은 지역 변수 a을 선언합니다. 입금액을 추가하면 값은 해당 반복에만 보유됩니다. 다음에 사용자에게 선택 사항을 입력하도록 요청하면 변수가 0으로 재설정되고 이전 변경 사항이 손실됩니다. 따라서 지역 변수를 없애고 위와 같이 선언 한 전역 변수를 사용하십시오. atmWithdrawatmCheck 함수에도 동일한 수정이 필요합니다. - 잔액 금액에서 입금액을 빼고 전역 변수를 반환합니다.

마지막으로 사용자가 입금 및 출금을 위해 입력 한 내용이므로 입력 매개 변수가 필요한 이유는 확실하지 않습니다. 따라서 함수에 대한 입력 매개 변수를 제거하십시오. 또한 각 경우에 화면에 새 잔액 만 표시하는 이유는 무엇입니까? 그래서 함수 서명을 좋아한다 :

void atmDeposit(); 
void atmWithdraw(); 
void atmCheck(); 
0

1)는 선언하여 변수 int a=0;세계적으로 (즉, 메인 함수 외부 - 아래). 이렇게하면 모든 함수가 공통 변수에 액세스 할 수 있습니다. 함수에서 int atmDeposit()

int a=0; 

int main() 
{ 
    ... 

2), 에게 선언 a=0; 제거. 기능 int atmWithdraw(int balance)에서

3) 프로그램이 작동이 변경system("pause");

a = balance; 

전에에게 다음 줄 을 추가합니다.