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

Что не так с кодом?

Федор Пашкевич-Григорьев Ученик (100), закрыт 2 дня назад
Лучший ответ
Николай Веселуха Высший разум (374407) 1 месяц назад
 #include <iostream> 
#include <string>
using namespace std;
int main() {
system("chcp 1251 > nul");
const string names[]{ "Дмитрий", "Гавриил", "Пётр", "Артём" };
size_t n = -1;
auto m = size(names);
do {
cout << "Введи целое число от 1 до " << m << ": ";
cin >> n;
} while (m <= --n);
cout << "Это: " << names[n] << '\n';
system("pause > nul");
}
Остальные ответы
Rotspawn Мудрец (15949) 1 месяц назад
Проблема в логике условия в do-while. Текущее условие:

while (choice != 1 || choice != 2 || choice != 3 || choice != 4);

Оно всегда истинно, потому что хотя бы одна часть выражения будет правдой (введенное число никогда не может быть одновременно равно всем четырем значениям).

Исправление: заменить || (логическое ИЛИ) на && (логическое И):

while (choice != 1 && choice != 2 && choice != 3 && choice != 4);

Это условие проверит, что введенное число не равно ни одному из допустимых значений. Тогда программа будет работать корректно.
Лев Перфилов Просветленный (33536) 1 месяц назад
Потому что у тебя везде || стоит. Одно из условий всё равно сработает. 4 не равно 2 => истина, цикл продолжается.
Похожие вопросы