Не работает проверка на ответ пользователя

107
17 февраля 2022, 13:50

У меня есть код. Вычисление среднего значения вектора (отрицательные элементы). Пользователю нужно определить, как нужно заполнять вектор. Если с клавиатуры - 2, если ГПСЧ - 1. Иначе - сообщение об ошибке. На практике код не работает.

При вводе 1 генерируются рандомные цифры, потом нужно ввести 10 чисел вручную. В итоге - ничего. Он так и не посчитал среднее значение элементов (будто, не дошел туда).

При вводе 2 - аналогично.

В чем может быть проблема?

#include <iostream>
#include <cstdlib> // содержит srand() и rand()
#include <string.h>
using namespace std;
int main() {
    setlocale(0, "");
    int n = 10;
    int Array[n];
    double summ = 0;
    int kol = 0;
    double result = 0;
    int answer;
    cout << "Как хотите заполнять массив? Если ГПСЧ - 1, если с клавы - 2 > ";
    cin >> answer;
    if (answer = 1) {
        for (int i = 0; i < n; i++) {
            Array[i] = rand() % 21 - 10; // (b - a + 1) + a -> [a; b]
            cout << "Элемент №" << i + 1 << ": " << Array[i] << endl;
        }
    }
    if (answer = 2) {
        for (int i = 0; i < n; i++) {
            cout << "Введите " << i + 1 << " элемент > " << endl;
            cin >> Array[i];
        }
    }
    else {
        cout << "Ошибка. Ввести можно или 1 или 2! " << endl;
    }
    for (int i = 0; i < n; i++) {
        if (Array[i] < 0) {
            kol++;
            summ += Array[i];
        }
    }
    cout << "" << endl;
    if (kol > 0) {
        int kol2 = 1;
        cout << "Отрицательные элементы: ";
        for (int i = 0; i < n; i++) {
            if (Array[i] < 0) {
                if (kol2 == kol) {
                    cout << Array[i] << "." << endl;    
                }
            if (Array[i] < 0 && kol2 != kol) {
                cout << Array[i] << ", ";
                kol2++;
                }
            }
        }
        cout << "Количество отрицательных элементов: " << kol << "." << endl;
    }
    if (kol = 0) {
        cout << "Отрицательных элементов нет." << endl;
    }
    cout << "" << endl;
    if (kol > 0) {
        result = summ/kol;
        cout << "Среднее арифметическое отрицательных элементов: " << result << endl;
    }
}
Answer 1
if (answer == 1) {
  ...
}
if (answer == 2) {
  ...

Попробуйте писать такие выражения вот так:

if (1 == answer) {
  ...
}
if (2 == answer) {
  ...

чтобы избегать подобных ошибок.

READ ALSO
Как узнать пересекаются ли поверхности в SDL?

Как узнать пересекаются ли поверхности в SDL?

Я делаю игру, и мне нужно, чтобы один игровой объект не накладывался на другойЕсть ли функция в SDL, позволяющая определить пересечение поверхностей...

80
Автогенерация кода в Qt

Автогенерация кода в Qt

QtCreator поддерживает разработку диаграмм конечных автоматов и UML-диаграммНо я никак не могу найти информацию, можно ли эти диаграммы использовать...

92
Почему std::plus не является вызываемым?

Почему std::plus не является вызываемым?

Почему std::plus<int> не является вызываемым?

95
Подскажите исходник инсталятора на C/C++

Подскажите исходник инсталятора на C/C++

подскажите хороший инсталятор с открытым кодом на C\C++ буду очень благодарен!

94