Что я могу сделать в этом коде, чтобы вызвать ошибку при использовании отрицательного числа? - PullRequest
0 голосов
/ 20 ноября 2018

Мне было интересно, что я могу сделать, чтобы вызвать ошибку при вводе отрицательного числа. Я использовал цикл for для этой программы. То, что делает эта программа, или, по крайней мере, она должна делать, это выводить коэффициент любого заданного числа (если оно положительное). Но я не уверен, как заставить мой код вызывать ошибку или, по крайней мере, продолжать спрашивать номер, если число, которое вводится, меньше или равно 0.

Я использовал переменную n в качестве числа для ввода пользователем.

Я действительно новичок в программировании и хочу закончить эту программу как можно скорее. Можете ли вы помочь?

  #include <iostream>
  #include <math.h>
  #include <stdlib.h>
  using namespace std;


int main()
{
double n;
cout << "Welcome to this program... Hope you like it" << flush << endl;
do
{
    int i, fact = 1, n;
    cout << "Please enter a value for the variable " "n: ";
    cin >> n;

    for (i = 1; i <= n; i++) {
        fact = fact * i;
    }
    cout << "Factorial of " << n << " is: " << fact << endl;
    cout << " Thanks for using this program... hope you liked it!" << endl;
} while (n >= 0);
return 0;
}

1 Ответ

0 голосов
/ 20 ноября 2018

Комменс в коде:

#include <iostream>

// it's best not to do using namespace std. It's a huge namespace

int main()
{
    std::cout << "Welcome to this program... Hope you like it\n";
    do
    {
        int i, fact = 1, n;
        std::cout << "Please enter a value for the variable " "n: ";
        std::cin >> n;

        // if std::cin is in a failed state then break out of the loop.
        if (std::cin.fail()) break;

        // added check if n<0. if n<0 ptint error on stderr
        if (n<0) {
            std::clog << "Error: you must supply a number equal to or greater than zero\n";
        } else { // if n>=0 
            for (i = 1; i <= n; i++) {
                fact = fact * i;
            }
            std::cout << "Factorial of " << n << " is: " << fact << "\n";
        }
    } while (true); // <- now always true 

    std::cout << "\nThanks for using this program... hope you liked it!\n";
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...