2012-10-06 4 views
0

내 코드의 기본 아이디어는 사용자가 0-9의 맞춤법, 즉 0, 1 등 또는 실제 숫자를 입력하고 숫자/맞춤법을 각각 출력하는 것입니다.while 루프에 두 개의 입력

숫자가 문자열 변수 인 while(cin >> number)을 사용하여 while 루프를 사용하여 이것을 수행 한 다음 if 문을 사용하여 "0"-> 0 및 "0"-> 0과 같은 적절한 출력 옵션을 선택합니다. .

처음에는 다음과 같이 시도했지만 시도했습니다.

while (cin >> number || cin >> n) 
{ 
    if (n == 0) 
     cout << digits[0] << endl; 
      . 
      . 
      . 
    else if (n == 9) 
     cout << digits[9] << endl; 

    if (number == digits[0]) 
     cout << 0 << endl; 
      . 
      . 
      . 
    else if (number == digits[9]) 
     cout << 9 << endl; 
} 

digits

는 문자열 "제로", "하나"등

이 문자열 출력이 정확 입력 할 때,하지만 작동하지 않았다하지만 정수를 저장 단지 벡터 클래스 입력은 항상 "제로"였습니다. 왜 이것이 작동하지 않는지 궁금 해서요? while 루프 조건과 관련이 있습니다. 컴퓨터가 문자열/정수가 입력되었는지 확인하고 적절한 조치를 취할 수 있습니까?

+0

모든 'if/else if'가 왜 그런가요? 왜 단지'cout << digits [n] << endl;'이 아닌가? – anthropomorphic

+0

예 저는 이것이 훨씬 더 좋을 것입니다.하지만 입력이 정수일 경우에만 작동 할 것입니다. 입력 내용이 문자열 인 경우 어떻게해야합니까? – Physbox

+0

아, 문자열이라면'if (n == "0") 대신'if (n == "0")'을 써야합니다. – anthropomorphic

답변

3

numberstring (항상 EOF 또는 다른 실패 조건을 치지 않는 한) 문제는 cin >> number이 항상 성공할 것이라는 점입니다. 사용자가 숫자를 입력하면 number은 숫자를 문자열로 유지합니다. 따라서 cin >> n은 발생하지 않습니다.

number"0" .. "9" (대신 숫자 이름을 테스트하는 것)을 비교해야합니다. if/else if 체인 대신 루프를 사용해야합니다.

+0

그래, 무슨 일이 일어나고 있는지 이해해. 고마워. 루프로 수정 해 보겠습니다. – Physbox

+0

입력이 "0", "1"등일 때 간단한 for 루프를 생성 할 수있었습니다.하지만 나는 입력이 "0", "1"등의 문자열 일 때 루프를 어떻게 사용하는지 이해하지 못합니다. 감사합니다. 감사합니다. – Physbox

0

나는 || 연산자의 사용법을 이해하지 못합니다. while (cin >> number || cin >> n)cin >> number을 의미하고 그 표현식이 false을 평가하면 cin >> n을 수행하고 두 사람 중 하나가 true을 평가하면 괄호 안에있는 것을 수행하십시오.

nneonneo가 말한 것처럼 cin >> number은 (거의) 항상 true을 평가할 것이므로 cin >> n은 실제로 발생하지 않을 것입니다. 그러나 실제로는 문제가 가장 적습니다.

내가 제안 할 수도 있지만, 지금 당장은 while 루프를 없애고 한 번만 수행하는 데 집중해야한다고 생각합니다. 당신이 필요한 것은 numbercin >> number이다 후 날씨에 테스트을하거나하지 않는 "0", "1", ... "9" 번호 또는 "zero", "one", ... "nine" 수. 그런 다음 하나를 다른 것으로 변환하는 방법을 결정할 수 있습니다.

+0

당신이 말한대로, 나는'while (cin >> n || cin >> number)'이 무엇을하는지 보려고했습니다. 이것은'cin >> n'을하지 않아야하고, false라면'cin >> number'을해야합니다. 따라서 문자열'0'을 입력하면이를 정수로 인식하고'n'으로 저장해야하지만''zero''가'number'에 문자열로 입력 되었다면? – Physbox

관련 문제