2012-11-19 2 views
0

코드에 유효성 검사 스크립트 사용에 대한 도움을 요청하는 이전 질문을 게시했습니다. 매우 도움이되는 대답을 한 후에 어떻게 진행해야 하는지를 알 수있었습니다. 글쎄, 나는 큰 장애물을 맞았다.C++ 숫자 유효성 검사 - 루프 사용 중

#include <iostream> 
#include <sstream> 
#include <string> 
#include <ctype.h> 

using namespace std; 

int main() 
{ 
     unsigned __int64 input = 0; 
     int n, i; 
     char str[]="c3po..."; 
     i=1; 
     n=0; 


     for (cout << "Input a number" << endl; cin >> input; cin.ignore(numeric_limits<int>::max(), '\n')) 
    { 
     cout << "We're parsing your input '" << input << "'\n"; 

    if (input % 2 == 0) 
     { 
      cout << "Even!" << endl; 
     } 

    else if (input % 2 == 1) 
     { 
      cout << "Odd" << endl; 
      cout << "Lets make it even shall we? " << "Your new number is... " << input + 1 << endl; 
     } 
    else (isalnum(str[i]));i++; 
     { 
     cout << "We could not parse '" << input << "' as a number.\n"; 
     }  
    } 
    system ("pause"); 
    return 0; 
} 

제 코드에서 알 수 있듯이 유효성 검사 스크립트는 작동 중입니다. 나는 밖으로 나가고 싶은 몇 가지 버그가 있습니다.

1 I 입력 숫자, 그것은 실행되면 비록이해야 할뿐만 아니라

Could not parse 'inputted number' as a number 

이 숫자 입력 분명히 할 때이 일이하고 싶지 않아 표시 등 코드!

2- 오류 메시지의 경우 입력 된 번호가 [0]으로 표시됩니다. 이것은 정수를 사용하는 것과 관련이 있습니까? 이 문제를 어떻게 해결할 수 있습니까?

감사합니다.

+0

저는 현재 침대에 머물러 있습니다. 조기 시작 내일. –

+0

당신은 당신이 이전에 얻은 것을 실제로 연습하지 않습니다. 변수를 사용하여 사용자의 입력을 검증하는 대신 입력에서 직접 추출 중입니다. – PRouleau

+0

그 코드를 이해할 수 없었습니다. 나는 그것을 부수고 레이아웃을 변경하여 코드 작성 방법을 보였지만 파트가 무엇을하는지 전혀 알지 못한다. (나는 그것을 지켰으므로 더 많은 경험을 얻을 때 다시 돌아가 수정할 것이다. –

답변

2

문제는이 라인

else (isalnum(str[i])); 

귀하의 else 문은 세미콜론으로 종료하고 실제로 아무것도하지 않습니다에 작은 실수가, 매우 간단합니다. 다음 진술은 매번 실행될 것입니다.

i++; 
    { 
    cout << "We could not parse '" << input << "' as a number.\n"; 
    } 
+0

흠, 어떻게 고칠까요? –

+0

그냥 삭제할 수 있다고 생각합니다. str과 i가 바뀌지 않으므로 else 다음에 오는 문장은 str의 두 번째 문자열을 검사한다. if 문이 없으므로 매번 오류 메시지가 인쇄됩니다. 사용자 입력이 실제로 숫자인지 확인하려면 http://stackoverflow.com/questions/4654636/how-to-determine-if-a-string-is-a-number-with-c – CodeBro

+0

이 (가) 있습니다. 내 자신의 코드를 사용하여 정렬 할 수있는 방법은 없습니까? 나는 C++을 오랫동안 해오 고 있지 않았기 때문에, 기본 지식을 얻으려고 노력했다. 당신이 보낸 링크는 내 머리 위로 똑바로 간다. –