c++ 문자열 입력시 오류문제

조회수 733회

int money(int coin, int add)

{ int coin2;

here:

system("cls");
coin2 = coin;
menu(coin, add);
cout << "입금해주세요. (100원 단위만 가능합니다.) :" << endl;

while (1) {
    cin >> coin;

    if (coin % 100 == 0) {
        coin = coin + coin2;
        goto here;
    }

    else if(coin % 100 > 0){
        cout << "100원 단위로 입금해주세요." << endl;
    }
    else {
        system("cls");
        cin.clear();
        cin.ignore();
        cout << "올바른 금액을 입력하시오";
        goto guest2;
    }
}
return 0;

}

원래는 문자열을 입력하면 else로 가서 처리하려했는데 문자열 입력시 coin값이 0으로 인식되어서 그런지 if문으로 가고 계속 반복되는 오류가 발생합니다. 문자열 예외처리할 다른방법이 있는지 조언 구합니다..ㅠㅠ

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 일단 cin >> coin 에서 coin이 함수로 들어온 인자인데 따로 변수를 선언하지 않고 사용한 것은 상당히 위험한 것 같고요.

    c++ 에서 cin의 예외를 처리 하기 좋은 방법이 있습니다.

    //여기에 코드를 입력하세요
    int data;
    
    cin >> data;
    
    if (cin.fail())
    {
       cout << "입력 오류" << endl;
    }
    else
    {
       cout << "입력 성공" << endl;
    }
    
    

    cin.fail() 에서 확인하여 int 타입에 맞는 지 확인 할 수 있습니다.

    그리고 이건 개인 스타일 차이겠습니다만... goto 문을 사용하는 것 보다 함수 호출을 하는 것이 어떨런지요.

    샘플 코드이니 참고용으로만 봐주세요.

    //여기에 코드를 입력하세요
    void display()
    {
       ...
       cout << "입금해주세요. (100원 단위만 가능합니다.) :" << endl;
    }
    
    int money(int coin, int add)
    {
       ...
    
       display()
    
       while(1) {
          cin >> coin;
    
          if (coin % 100 == 0) {
             display();
          }
    
          ...
       }
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)