Не могу понять, почему моя инструкция if не работает: (if array [i] << средняя) - PullRequest
0 голосов
/ 28 октября 2019

Я должен был составить программу для 5 возрастов, рассчитать среднее значение, а затем показать, сколько возрастов выше среднего и сколько ниже. Полегче, подумал я. Однако по какой-то причине, независимо от того, что я делаю, оператор if для проверки того, что текущий элемент ages [] меньше среднего, всегда остается верным, а оператор if для проверки, больше ли текущий элемент ages [] среднего значения. всегда держу ложь, и я не могу на всю жизнь понять, почему. Может быть, это потому, что сейчас 3:30 утра, и мой мозг пришел в себя.

Я попытался добавить переменную age = ages [j] для каждой итерации. Я также попытался поменять местами приведенные выше и ниже выражения if, но это также ничего не меняет.

#include <iostream>
using namespace std;
void main() {
    int ages[5];
    int total = 0;
    int average = 0;
    int above = 0;
    int below = 0;
    for (int i = 0; i < 5; i++) {
        cout << "Enter an age.";
        cin >> ages[i];
        cout << ages[i];
        total += ages[i];
    }
    average = total / 5;
    for (int j = 0; j < 5; j++) {
        if (ages[j] >> average) {
            cout << ages[j];
            above++;
        }
        else if (ages[j] << average) {
            cout << average;
            cout << ages[j];
            below++;
        }
    }
    cout << "The average age is " << average << "." << endl;
    cout << above << " ages are above the average age." << endl;
    cout << below << " ages are below the average age." << endl;
}

Я ожидаю, что получится выражение "Средний возраст (средний)" "x возрастов вышесредний возраст."«y возраст выше среднего возраста»

Вместо этого я получаю: «средний возраст (средний)» «0 возрастов выше среднего возраста». «5 возрастов ниже среднего.»

1 Ответ

2 голосов
/ 28 октября 2019

Вы используете битовые смещения вместо больше / меньше чем

if (ages[j] > average)
...