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 пользователем Тролль Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.