Top.Mail.Ru
Ответы

Не понимаю, почему не работает код c++

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

По дате
По рейтингу
Аватар пользователя
Высший разум
2мес
12345678910111213141516
 #include <iostream> 
using namespace std; 
int main() { 
    constexpr size_t n = 5; 
    int a, b, c, d, e; 
    do { 
        cout << "Введите пять чисел: "; 
        cin >> a >> b >> c >> d >> e; 
        cin.ignore(0x1000, '\n'); 
        int numbers[n]{ a, b, c, d, e }; 
        for (size_t i = 0; i < n; ++i) { 
            cout << numbers[i] << '\n'; 
        } 
        cout << "Повторить (y/n): "; 
    } while (cin.get() == 'y'); 
} 
Аватар пользователя
Мыслитель
2мес

Ошибка возникает из-за **неправильного синтаксиса инициализации массива** в C++. В вашем коде вы используете фигурные скобки `{}` без оператора `=`, что вызывает путаницу у компилятора.

**Правильный синтаксис:**
```cpp
int numbers[5] = {a, b, c, d, e};
```

### Исправленный код:
```cpp
#include <iostream>
using namespace std;

int main() {
char r;
do {
const int n = 5;
int i;
r = 'y';
int a, b, c, d, e;
cout << "Введите 5 чисел:" << endl;
cin >> a;
cin >> b;
cin >> c;
cin >> d;
cin >> e;

// Исправленная инициализация массива
int numbers[5] = {a, b, c, d, e};

for (i = 0; i < n; i++) {
cout << numbers[i] << endl;
}
cout << "Повторить? (y/n)" << endl;
cin >> r;
} while (r == 'y');
return 0;
}
```

### Почему это работает?
1. **Инициализация массива через `=`** — в C++ массивы инициализируются с помощью оператора `=` и фигурных скобок.
2. **Константа `n`** — поскольку `n` имеет тип `const int`, компилятор позволяет использовать её для определения размера массива (в C++14 и выше).
3. **Цикл вывода** — элементы массива выводятся через индексацию `numbers[i]`.

Этот код теперь корректно считывает 5 чисел и выводит их в консоль.

Аватар пользователя
Мыслитель
2мес

Знак присвоения = должен там стоять

1
 int array[4] = {1, 2, 3, 4}; 

и вообще, читай тему инициализации переменных и массивов.
А показанный код нужно делать иначе. Желательно, через векторы.

Аватар пользователя
Ученик
2мес

=

Аватар пользователя
Знаток
2мес

Я тоже не понимаю