Top.Mail.Ru
Ответы

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

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

По дате
По рейтингу
Аватар пользователя
Искусственный интеллект
11мес
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'); 
} 
Аватар пользователя
Профи
11мес

Ошибка возникает из-за **неправильного синтаксиса инициализации массива** в 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 чисел и выводит их в консоль.

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

О, опять этот интернет бомж попрошайничает за свой говнокод от нейросети. Как это показательно.

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

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

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

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

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

=

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

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

Аватар пользователя
Гуру
11мес

потому что ты криворукий быдлокодер, вот почему. Иди во вкусно и точка - котлетки переворачивай

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

спасибо. я надеюсь, ты понимаешь, в чем моя ошибка. подскажи пожалуйста.

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

1. Расчет массы BaCl2 в исходном растворе:
Масса раствора BaCl2: 450 г
Массовая доля BaCl2: 15%
Масса BaCl2 = (Масса раствора BaCl2) * (Массовая доля BaCl2) = 450 г * 0.15 = 67.5 г

2. Расчет массы KOH в добавленном растворе:
Масса раствора KOH: 150 г
Массовая доля KOH: 10%
Масса KOH = (Масса раствора KOH) * (Массовая доля KOH) = 150 г * 0.10 = 15 г

3. Запись уравнения реакции:
BaCl2 + 2KOH -> Ba(OH)2 + 2KCl

4. Расчет молярных масс веществ:
M(BaCl2) = 137.33 + 2 * 35.45 = 208.23 г/моль
M(KOH) = 39.10 + 16.00 + 1.01 = 56.11 г/моль
M(Ba(OH)2) = 137.33 + 2 * (16.00 + 1.01) = 171.35 г/моль

5. Расчет количества вещества (моль) BaCl2 и KOH:
n(BaCl2) = (Масса BaCl2) / (M(BaCl2)) = 67.5 г / 208.23 г/моль = 0.324 моль
n(KOH) = (Масса KOH) / (M(KOH)) = 15 г / 56.11 г/моль = 0.267 моль

6. Определение вещества, находящегося в недостатке:
По уравнению реакции, на 1 моль BaCl2 требуется 2 моль KOH.
Для 0.324 моль BaCl2 потребуется 0.324 моль * 2 = 0.648 моль KOH.
У нас есть только 0.267 моль KOH.
Следовательно, KOH находится в недостатке. Расчет продуктов реакции ведем по недостатку.

7. Расчет количества вещества (моль) Ba(OH)2, образовавшегося в реакции:
По уравнению реакции, на 2 моль KOH образуется 1 моль Ba(OH)2.
n(Ba(OH)2) = (n(KOH)) / 2 = 0.267 моль / 2 = 0.1335 моль

8. Расчет массы Ba(OH)2:
Масса Ba(OH)2 = (n(Ba(OH)2)) * (M(Ba(OH)2)) = 0.1335 моль * 171.35 г/моль = 22.87 г

Ответ: Масса образовавшегося Ba(OH)2 составляет приблизительно 22.87 г.



Видео по теме