Как зациклить, если входной номер отрицателен - PullRequest
1 голос
/ 25 октября 2019

Проверка ввода:

Программа должна выдать ошибку и позволить пользователю повторить попытку, если таковые имеются, если числа отрицательны. Требуется только одна итерация (т. Е. Вашей программе не нужно запрашивать еще три числа, она может завершиться после печати результата).

Итак, домашняя работа выполнена, и мне не хватает только этой проверки вводакак указано выше. Другими словами (из моего занижения), я должен реализовать цикл в моем коде, где пользователь должен ввести еще 3 набора чисел, если они ранее вводили отрицательное число.

#include <iostream>
#include <iomanip>
using namespace std;

double getAverage (double num1, double num2, double num3){

    double averageAmount;

    averageAmount = (num1 + num2 + num3)/ 3;

    return averageAmount;
}
double getMedian (int num1, int num2, int num3){

       int x = num1-num2;
       int y = num2-num3;
       int z = num1-num3;
       if(x*y > 0) return num2;
       if(x*z > 0) return num3;
       return num1;
}
double countDigits( int num1){

    int digits = 0;

    while (num1){

        num1 = num1/10;
        digits++;
    }

    return (digits);
}

int main() {

    double num1 = 0;
    double num2 = 0;
    double num3 = 0;

    cout << "Enter 3 integers" << endl;
    cin >> num1;
    cin >> num2;
    cin >> num3;

    cout << "The average is " << fixed << setprecision(2) << getAverage(num1, num2, num3) << endl;
    cout << "The median is " << fixed << setprecision(2) << getMedian(num1, num2, num3) << endl;
    cout << "There are " << countDigits(num1) << " digits in the number " << num1 << endl;

    return 0;
}

Если пользователь вводит отрицательное число, я ожидаю, что результат будет "Введите 3 целых числа" //, поскольку нам нужны только положительные числа

Ответы [ 3 ]

1 голос
/ 25 октября 2019

вы можете написать код с помощью цикла do-while:

do {
   cout << "Enter 3 integers" << endl;
   cin >> num1;
   cin >> num2;
   cin >> num3;
} while ((num1 < 0) || (num2 < 0) || (num3 < 0));

в противном случае просто с помощью цикла while, как:

while (true) {
   cout << "Enter 3 integers" << endl;
   cin >> num1;
   // if any number is -ve, continue the whole loop
   if (num1 < 0) continue;
   cin >> num2;
   if (num2 < 0) continue;
   cin >> num3;
   if (num3 < 0) continue;
   // if every number is positive, just break out of the loop
   break; 
}

Надеюсь, это поможет, спасибо - Раджкумар

0 голосов
/ 28 октября 2019
cout << "Enter 3 integers" << endl;
        cin >> num1;
        cin >> num2;
        cin >> num3;

            while(num1 < 0 || num2 < 0 || num3 < 0)
            {
                if (num1 < 0)
                {
                    cout << "Your first number [" << num1 << "] is negetiv. Please enter a positive number!";
                    cin >> num1;
                }
                if (num2 < 0)
                {
                    cout << "Your second number [" << num2 << "] is negetiv. Please enter a positive number!";
                    cin >> num2;
                }
               if (num3 < 0)
                {
                    cout << "Your third number [" << num3 << "] is negetiv. Please enter apositive number!";
                    cin >> num3;
                }
            }

Не забудьте дождаться нажатия клавиши пользователем после печати цифр с помощью:

cin;

или

system("pause");

0 голосов
/ 25 октября 2019

Вы можете использовать цикл для ввода чисел.

Когда пользователь вводит любое отрицательное число, вы можете показать сообщение об ошибке и выйти из основной функции.

Например:

double num[3];

cout << "Enter 3 positive integers" << endl;
for(int i=0; i<3; i++) {
    cin >> num[i];
    if (num[i] < 0 ) {
        cout << "Only 3 positive integers are allowed";
        return 0;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...