если еще заявление перепутал с ++ - PullRequest
0 голосов
/ 19 сентября 2011
#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;
}

Выше у меня есть цикл for с оператором if else в центре.Я в замешательстве, потому что хочу, чтобы это было так, когда я введу целое число, которое не является отрицательным, это зациклит результат if.Но я хочу, чтобы это было так, если я введу отрицательное число, оно говорит, пожалуйста, введите положительное целое число.Вот почему я установил его так, чтобы в операторе if только числа выше и = 0 возвращали результат, но если я введу отрицательное число, я просто получу 0, и я хочу, чтобы он сказал «Пожалуйста, введите положительное целое число».Я не понимаю, что я делаю не так.Разве оператор if, если true, вытягивает if, а если не true, вытягивает else?Или я что-то упустил?

Ответы [ 5 ]

4 голосов
/ 19 сентября 2011

Если вы введете отрицательное число, вы никогда не попадете в цикл. Подход, который лучше подходит для таких случаев:

do
{
    input a number;
    if( positive )
         do something;
} while( not positive );
3 голосов
/ 19 сентября 2011

Если я правильно понял, вы хотите 1. ввести число;2.1 Если число положительное, вы проходите через него.2.2 Если оно отрицательное, вы показываете сообщение об ошибке.

Проблема заключается в том, что ваш цикл, в котором используется условное выражение, проверяет, меньше ли i (что равно нулю) числа.Однако, если вы введете отрицательное число, я буду больше, чем 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;

}
1 голос
/ 19 сентября 2011

Результат, который вы получаете, состоит в том, что ваш цикл завершается с ошибкой при неотрицательных числах. Вам следует попробовать следующее:

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;

}
1 голос
/ 19 сентября 2011

Я думаю, что ваш код выиграет от некоторой перестановки. Я бы структурировал это примерно так:

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

cout << sum_series(1, number);
0 голосов
/ 19 сентября 2011

Насколько я понимаю, если число отрицательное, вы хотите сделать еще один ввод.Но оператор cin не находится под контролем цикла, чтобы сделать это.Он выполняется только один раз, независимо от характера числа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...