2017-11-24 15 views
0

cin이 점수를 입력 할 때 사용자가 Enter 키를 입력하면 오류를 감지하여 출력하려고합니다. 나는 생각하고 있었다 if (score.size() == 0) cout < < "not a score"; 그러나 이것은 이미 선언 된 score에 대한 데이터 유형을 선언해야한다고 말합니다. 간단하고 우아한 해결책이있는 것처럼 느껴집니다. 나는 간단한 조건을 점검하거나 거기에 도착하기위한 조언이있는 초보자 해결책을 찾고있다.int 형 입력을위한 입력 키 감지

void get_scores(vector<int> &v) 
{ 
    int score, count=1; 
    cout<<"Enter scores, enter -1 to stop"<<endl; 
    cin>>score; 
    while (score!=-1 && count<=100) 
    { 
     v.push_back(score); 
     count++; 
     cin>>score; 
    } 
} 

답변

0

프로그래밍에 익숙하지 않은 것 같습니다. 문제를보다 작은 단계로 나누는 방법을 배우는 것이 중요합니다.

첫 번째 단계는 정수 대신 사용자로부터 문자열을 읽는 것입니다. 두 번째 단계는 문자열이 비어 있는지 확인하는 것입니다. 세 번째 단계는 문자열을 정수로 변환하는 것입니다.

이 사이트의 각 세 단계에 대한 유용한 정보를 찾을 수 있습니다. 이 세 단계를 수행하는 방법을 알았 으면 프로그램에 모두 포함시켜야합니다.

저는 이것이 완전한 대답은 아니지만 이것이 당신이이 문제에 접근하는 방법을 이해하는 데 도움이되기를 바랍니다. 충분한 연습을 통해 문제를 작은 조각으로 분해하면 자동으로 문제가됩니다.

+0

답장을 보내 주셔서 감사합니다. 예, 저는 아주 새롭기에 당신의 충고를 높이 평가합니다. 그래서 당신이 언급 한 것을 이해합니다. 그러나 정수 cin이 단지 공백/입력인지 확인하는 방법이 있는지 알고 싶습니다. 강사 (온라인)가 입력 크기를 확인할 수 있다고 전했는데, 예 : score.size() == 0이면 오류를 출력합니다. 오류 : 표현식에 클래스 유형이 있어야합니다. –

+0

'int'에서'std :: string'으로'score'를 바꾸어보세요. 그러면 크기가 생기고'score.size()'에 대한 코드 스 니펫이 작동합니다. 그러나 이것은'score'를'int'로 취급하는 코드의 다른 부분을 깨뜨릴 것이므로 문자열을 정수로 변환하는 방법을 알아야합니다 (이 사이트 검색). –

+0

요점은 입력 방법 ('int score; cin >> score;')이 작동하지 않아 변경해야한다는 것입니다. 그것은 당신에게 당신이 그것을 공백 입력에 대해 0을 반환하기 때문에 당신에게 원하는 모든 기능을 제공하지 않습니다. 따라서 정수를 읽는 대신 사용자로부터 문자열을 읽을 수 있습니다. 단순히'int'에서'std :: string'으로'score'의 타입을 변경할 수 있습니다. 이제 위의 내 대답에서 첫 번째 단계를 수행하는 방법을 알았습니다. 두 번째 단계에서는'score.size() == 0' 코드를 이미 인용했습니다. 세 번째 단계에서는 Google 검색 및이 사이트 검색 방법을 배우십시오. –