Оператор If для управления диапазоном чисел с использованием массива - PullRequest
0 голосов
/ 14 ноября 2018

Я создал массив, который содержит 5 чисел, и пользователь вводит числа. Если метка меньше 0 и больше 100, я хочу распечатать «недопустимый номер метки». Как я мог это сделать?

using namespace std; 

int mark[5];

int main () 
{
cout << "enter mark 0:  ";
cin >> mark[0];


cout << "enter mark 1:  ";
cin >> mark[1];

cout << "enter mark 2:  ";
cin >> mark[2];

cout << "enter mark 3:  ";
cin >> mark[3];

cout << "enter mark 4:  ";
cin >> mark[4];

}

1 Ответ

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

Вы должны использовать for-loop, чтобы сделать код более читабельным и компактным. Потому что, как только вы введете операторы if, размер кода значительно увеличится. Это должно выглядеть так:

#include <iostream>

using namespace std;

int mark[5];

int main () {
    for (int i = 0; i < 5; i++){
        cout << "enter mark " << i << ":  ";
        cin >> mark[i];
        if (mark[i] < 0 || mark[i] > 100){
            cout << "invalid mark number\n";
        }
    }
}

Не используйте using namespace std; ( читайте здесь, почему ) и держите int mark[5]; внутри main -функции ( читайте здесь, почему ). Также для добавления к логике вынудите пользователя снова ввести:

#include <iostream>

int main () {
    int mark[5];
    for (int i = 0; i < 5; i++){
        bool valid_input = false;
        while (!valid_input){
            std::cout << "enter mark " << i << ":  ";
            std::cin >> mark[i];
            if (mark[i] < 0 || mark[i] > 100){
                std::cout << "invalid mark number\n";
            }
            else{
                valid_input = true;
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...