2011-09-19 6 views
0
#include <iostream> 
using namespace std; 

int main() 
{ 
    int positiveInteger; 

    cout << "Please input an integer up to 100." << endl; 

    cin >> positiveInteger; 

    int result = 0; 
    for (int i = 0; i <= positiveInteger; i++) 
    { 
     if (positiveInteger >= 0) 
     { 
      result += i; 
     } 
     else 
     { 
      cout << "Please input a positive integer." << endl; 
     } 
    } 

    cout << result; 
    return 0; 
} 

위의 코드는 if31 문단을 중심으로 for입니다. 나는 그것이 음수가 아닌 정수를 입력 할 때 if 결과를 반복 할 것이기 때문에 혼란 스럽다. 하지만 음수를 입력하면 양의 정수를 입력하십시오. 그래서 if 문에서 위의 숫자 만 0으로 설정하면 결과가 반환되지만 음수를 입력하면 0을 얻습니다. "양의 정수를 입력하십시오."라고 말하고 싶습니다. 나는 내가 뭘 잘못하고 있는지 이해하지 못한다. if 문이 true이면 true, false이면 false를 반환합니다. 또는 나는 무엇인가 놓치고 있냐?else statement가 혼동하는 경우 C++

+0

기다림 저는 결과가 0을 반환하지만 여전히 정수는 그게 긍정적 인 정수를 입력하십시오 제발 말하지 않을거야 실현? – mystycs

답변

3

; 나는이 같은 구조화 것 2.1 숫자가 양수이면 반복합니다. 2.2 음수 인 경우 오류 메시지가 표시됩니다.

문제는 루프입니다. 조건부는 i (0)가 작은 지 확인합니다. 그러나 음수를 입력하면 나는 positiveInteger보다 커지고 if를 반복하지 않을 것입니다. 귀하의 코드를 수정했습니다

using namespace std; 

int main() 
{ 
    int positiveInteger; 

    cout << "Please input an integer up to 100." << endl; 

    cin >> positiveInteger; 

    int result = 0; 
    if (positiveInteger >= 0){ 
     for (int i = 0; i <= positiveInteger; i++) 
     { 
      result += i; 
     } 
     cout << result; 
    } 
    else { 
     cout << "Please input a positive integer." << endl; 
    } 

    return 0; 

} 
+0

와우 그 재미있는 나는 안쪽에 forloop를 넣어 생각하지 않았다. – mystycs

+1

또한 if 문 안에'cout << result'를 넣으므로 인쇄 할 때 0을 반환하지 않습니다! – mystycs

+0

그래, 사실 나는 그것을 놓쳤다. 당신은 당신이 당신 자신을 언급 한 이유로 그것을해야합니다 :) – DallaRosa

4

음수를 입력하면 절대로 루프에 들어 가지 않습니다. 그러한 경우에 더 잘 맞는 접근법은 다음과 같습니다.

do 
{ 
    input a number; 
    if(positive) 
     do something; 
} while(not positive); 
+0

이것은 do while 루프로 간주됩니까? – mystycs

+0

@mystcys, 읽을 수 있듯이 .... –

+1

오, 난 그냥 havent 이것을 아직 공부했습니다. – mystycs

0

숫자가 음수이면 다른 입력을 원합니다. 그러나 cin 문은 루프 제어하에 있지 않으므로 그렇게하십시오. 번호의 성격에 관계없이 단지 한 번만 실행됩니다.

1

여러분의 코드는 일부 재배치의 이점을 얻을 것이라고 생각합니다. 내가 바로 당신이 1. 입력 숫자로 원하는 가지고있는 경우

do { 
    cout << "please enter a number between 1 and 100"; 
    number = get_number(): 
} while (number < 1 || number > 100); 

cout << sum_series(1, number); 
+0

아, 나는 아직 반복하면서 이것을 배웠다. 내 이해가 더 효율적일 때도 그렇습니까? – mystycs

+0

이것은 논리보다 효율성이 떨어집니다. 항상 do/while 루프가 의도 한 것인데 적어도 한 번 이상 숫자를 읽길 원합니다. –

1

출력이 음수가 아닌 숫자로 실패하기 때문에 발생합니다. 다음을 시도해야합니다 :

int main() 
{ 

int positiveInteger; 

cout << "Please input an integer upto 100." << endl; 

cin >> positiveInteger; 

int result = 0; 
if (positiveInteger < 0) 
{ 

    cout << "Please input a positive integer." << endl; 

} 
else{ 


    for (int i = 0; i <= positiveInteger; i++) 
    { 

    result += i; 

    } 

cout << result; 

} 
return 0; 

} 
관련 문제