little_greg Опубликовано 27 марта, 2009 Жалоба Поделиться Опубликовано 27 марта, 2009 Всегда пишет, что ответ на вопрос "WRONG SYMBOL!" (из default: printf("WRONG SYMBOL!\n"):doh: #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int answer; printf("5 + 5 = \n"); printf("1. 6\n"); printf("2. 7\n"); printf("3. 10\n"); printf("4. 9\n"); printf("Vvedite nomer otveta\n"); getchar(); answer = getchar(); switch(answer) { case 1: printf("You're wrong\n"); break; case 2: printf("You're wring\n"); break; case 3: printf("Congratulation! You win!\n"); break; case 4: printf("You're wrong\n"); break; default: printf("WRONG SYMBOL!\n"); } system("PAUSE"); return EXIT_SUCCESS; } Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 27 марта, 2009 Жалоба Поделиться Опубликовано 27 марта, 2009 (изменено) little_greg: Число 3 и цифра 3 - это разные вещи. Цифра 3 - это символ, представление которого в машине совпадает с представлением числа 51. Поэтому нельзя сравнивать введенный символ с числом без корректировки кода. Если уж вводится символ, проще всего и сравнивать его с символами, то есть для правильной работы программы надо убрать первый getchar() и заменить case 1: на case '1': и так далее во всех case. Строго говоря, в этом случае правильнее было бы заменить и тип для answer на char, хотя программа будет работать и без этой замены. Такие ошибки не прошли бы без возражений компилятора в Паскале, но C и C++ предполагают, что программист знает, что делает, даже когда он прибавляет к сапогам всмятку яичные желтки. P.S. Еще лучше программа станет, если дополнительно заменить #include <cstdlib> на #include <conio.h> и answer = getchar(); на answer = getch(); Тогда после ввода цифры не надо будет нажимать Enter. Изменено 28 марта, 2009 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти