Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Програмирование C++ ошибка

НенадоДелать Ученик (94), открыт 1 неделю назад
Создал простенький показ инвентаря игрока, но почему-то при выводе инвентаря выводит две строчки вашего оружия, хотя должна одна.
4 ответа
dmilor Мастер (2397) 1 неделю назад
Да копируй ты код и дай на раздумие ИИ
НенадоДелатьУченик (94) 1 неделю назад
посоветуй какую нибудь
dmilor Мастер (2397) НенадоДелать, Скинь мне код
НенадоДелатьУченик (94) 1 неделю назад
void Inventory() {
ifstream weaponPM("Weapon_PM");
ifstream weaponObrez("Weapon_Obrez");
int a = -1;
string nameW;
int b;
int d;
int p;
int q;
while (weaponPM) {
a++;
switch (a)
{
case 0:
weaponPM >> nameW;
case 1:
weaponPM >> b;
case 2:
weaponPM >> d;
case 3:
weaponPM >> p;
case 4:
weaponPM >> q;
Weapon_vector.emplace_back(nameW, b, d, p, q);


default:
break;
}
}

for (auto elem : Weapon_vector) {
elem.getWeapon();
}

}
dmilor Мастер (2397) НенадоДелать, #### Ошибка в коде Ваш код содержит ошибку в конструкции `switch`. В данном случае, после выполнения каждого `case`, программа продолжает выполнять все последующие `case`, потому что отсутствуют операторы `break`. Это приводит к тому, что в вектор `Weapon_vector` добавляются элементы с неполностью инициализированными данными, что может вызывать некорректное поведение программы .
dmilorМастер (2397) 1 неделю назад
void Inventory() {
ifstream weaponPM("Weapon_PM");
ifstream weaponObrez("Weapon_Obrez");
int a = -1;
string nameW;
int b;
int d;
int p;
int q;
while (weaponPM) {
a++;
switch (a)
{
case 0:
weaponPM >> nameW;
break;
case 1:
weaponPM >> b;
break;
case 2:
weaponPM >> d;
break;
case 3:
weaponPM >> p;
break;
case 4:
weaponPM >> q;
Weapon_vector.emplace_back(nameW, b, d, p, q);
break;
default:
break;
}
}

for (auto elem : Weapon_vector) {
elem.getWeapon();
}
dmilorМастер (2397) 1 неделю назад
В этом исправленном коде после каждого case стоит оператор break, который прерывает выполнение switch и переходит к следующей итерации цикла while. Таким образом, каждый раз, когда a увеличивается, считывается только одно значение из файла, а не все сразу. Когда a достигает 4, в вектор добавляется полностью инициализированный объект оружия.
Леонид Петров Мастер (1987) 1 неделю назад
в case 4 зачем нужен a=-1;? далее прога перепроверяет switch и видит что 'a' опять равен 4 поэтому в Weapon_vector засовывает ещё раз
Zebra Zebrov Ученик (170) 1 неделю назад
Пиши с мягким злаком.
Или позвони пудрецу по холодной линии 102 и назови адрес обязательно
Похожие вопросы