|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - помогите разобраться |
|
C/C++ - помогите разобраться
|
Новый участник Сообщения: 11 |
Профиль | Отправить PM | Цитировать Всем доброго времени суток. Совсем недавно начал изучать С++ и вот решил попробовать написать первую программу. Пишу в Code::Blocks 10.05. Сопсно, код:
#include <iostream> using namespace std; char keymap [256]; int main() { int a=0,b=0,c=0,choice; cout<<"The calculator"<<endl<<"version 1.0\n"<<endl; do { cout<<"Enter number and press <enter> button: "<<endl; cin>>a; cout<<endl<<a<<endl; cout<<"\nChoose operation: "<<endl<<"+"<<endl<<"-"<<endl<<"*"<<endl<<"/"<<endl<<"="<<endl<<"For exit press 'q' (quit)"<<endl; cin>>choice; switch (choice) { case '+': cout<<a<<" + "<<endl<<endl; cout<<"Enter number and press <enter> button: "<<endl; cin>>b; с=a+b; cout<<endl<<a<<"+"<<b<<"="<<d<<endl; break; case '-': cout<<a<<" - "<<endl<<endl; cout<<"Enter number and press <enter> button: "<<endl; cin>>b; с=a-b; cout<<endl<<a<<"-"<<b<<"="<<d<<endl; break; case '*': cout<<a<<" * "<<endl<<endl; cout<<"Enter number and press <enter> button: "<<endl; cin>>b; с=a*b; cout<<endl<<a<<"*"<<b<<"="<<d<<endl; break; case '/': if (a!=0) { cout<<a<<" / "<<endl<<endl; cout<<"Enter number and press <enter> button: "<<endl; cin>>b; с=a/b; cout<<endl<<a<<"/"<<b<<"="<<d<<endl; } else { cout<<"Zero can not be divided. Enter another number!!\n"<<endl; } break; case '=': cout<<a<<" = "<<a<<endl<<endl; break; } } while ('q'); } Но вот какая беда - я не знаю, как заставить С понимать нажатие клавиш. При выборе любой из операций (+,-,*,/,q) программа зацикливается в этом месте до бесконечности... cout<<"Enter number and press <enter> button: "<<endl; cin>>a; cout<<endl<<a<<endl; cout<<"\nChoose operation: "<<endl<<"+"<<endl<<"-"<<endl<<"*"<<endl<<"/"<<endl<<"="<<endl<<"For exit press 'q' (quit)"<<endl; cin>>choice; Подскажите пожалуйста, как мне решить эту простенькую задачку?? |
|
Отправлено: 19:40, 06-02-2012 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Объясни, что за
Цитата Harik:
while q что? Выход почему? Потому что гладиолус? Вспоминай анекдот: -Приборы! -15! -Что 15?! -Какие приборы?!!! Выход. Q! Что Q? Какое Q? Куда это Q? Поэтому надо сделать что? Правильно, поставить условие! Q у нас не просто так, а кто-то или что то должно быть ему равно или не равно. Правильно? Или не правильно? Поэтому while <логическое условие> ! А q - это не логическое условие, это с боку бантик. Вот. На ошибку я тебе указал. Дело за малым. Исправишь ее и ты молодец! |
|
------- Отправлено: 21:36, 06-02-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать |
Отправлено: 00:27, 07-02-2012 | #3 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Harik,
Цитата Harik:
(а вот тут серьезно) Q - это что? Это буква, цифра, длинное слово, логическая переменная? choice - то же самое. Что это? Что и с чем ты пытаешься сравнить? (а тут уже не очень) Уж не крокодилов ли с ежиками? Цитата Harik:
|
||
------- Отправлено: 00:45, 07-02-2012 | #4 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать С той штукой разобрался. Спасибо большое за подсказки
Но теперь не могу разобраться с локализацией. Спрашивал у гугла по этому поводу, говорит - дело в консоли (её кодировка). То есть теоретически если в консоли указать нужную кодировку, то всё будет корректно отображаться. А как сделать, чтобы всё правильно отображалось на этапе написания кода. В смысле, не в самом коде, а в результате компиляции, чтобы не приходилось лишний раз лезть в консоль и указывать кодовую страницу..? Вот, что у меня получилось, просьба не смеяться)) #include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; int main() { int choice; setlocale(LC_ALL,"Russian"); double a=0,b=0; char op,q; double res; cout<<"Калькулятор"<<endl<<"версия 1.1\n"<<endl<<endl; repeat: cout<<"Будем считать?"<<endl<<endl<<"1. Да\n2. Нет"<<endl; cin>>choice; if (choice==1) { do { cout<<"Введите Ваше число и нажмите кнопку <enter>: "<<endl; cin>>a; cout<<endl<<a<<endl; cout<<"\nChoose operation: "<<endl<<"+"<<endl<<"-"<<endl<<"*"<<endl<<"/"<<endl<<"="<<endl<<"For exit press 'q' (quit)"<<endl; cin>>op; switch (op) { case '+' : cout<<a<<" + "<<endl<<endl; cout<<"Введите Ваше число и нажмите кнопку <enter>: "<<endl; cin>>b; res=a+b; cout<<endl<<a<<"+"<<b<<"="<<res<<endl<<endl; break; case '-' : cout<<a<<" - "<<endl<<endl; cout<<"Введите Ваше число и нажмите кнопку <enter>: "<<endl; cin>>b; res=a-b; cout<<endl<<a<<"-"<<b<<"="<<res<<endl<<endl; break; case '*' : cout<<a<<" * "<<endl<<endl; cout<<"Введите Ваше число и нажмите кнопку <enter>: "<<endl; cin>>b; res=a*b; cout<<endl<<a<<"*"<<b<<"="<<res<<endl<<endl; break; case '/' : if (a!=0) { cout<<a<<" / "<<endl<<endl; cout<<"Введите Ваше число и нажмите кнопку <enter>: "<<endl; cin>>b; } else if (b!=0) { res=a/b; cout<<endl<<a<<"/"<<b<<"="<<res<<endl<<endl; } else (a=0,b=0); { cout<<"Нельзя делить на ноль. Введите другое число!!\n"<<endl; } break; /* case 'q' : return 0; break; */ default: cout<<"Неверный оператор '"<<op<<"'"<<endl<<endl; cout<<"Попробуйте ещё раз!\n\nВведите число: "; break; } } while (op==q); } else if (choice!=1,choice!=2) { cout<<"Ошибка. Повторите ввод!"<<endl; goto repeat; } else (choice==2); { cout<<"До свидания!"<<endl; return 0; } } |
|
Отправлено: 20:07, 07-02-2012 | #5 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Harik:
|
|
------- Отправлено: 21:39, 07-02-2012 | #6 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать могу поделиться своим опытом)) по поводу кирилицы вот =
ПИСАТЬ В INT MAIN() { setlocale( LC_ALL, "Russian" ); } |
Отправлено: 22:25, 07-02-2012 | #7 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать virus8, это по моему для Visual Studio работает, но в билдере у меня не проходит такой вариант. И, уже было.
|
------- Отправлено: 23:56, 07-02-2012 | #8 |
ИО Капитана Очевидности Сообщения: 5387
|
Профиль | Отправить PM | Цитировать Цитата Harik:
Значение константы 'q' является целочисленным и равно коду указанного символа. Следовательно условие всегда будет истинным, и цикл будет выполняться бесконечно |
|
------- Отправлено: 04:26, 14-02-2012 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Помогите разобраться | Felixcat | Видеокарты | 1 | 27-09-2009 13:15 | |
Помогите разобраться | pogo | Microsoft Windows NT/2000/2003 | 2 | 06-07-2009 13:00 | |
CMD/BAT - Помогите разобраться... | LooTer | Скриптовые языки администрирования Windows | 1 | 21-07-2008 06:48 | |
Помогите разобраться | Degrimort | Видеокарты | 12 | 26-12-2007 17:46 | |
Помогите разобраться | Larich | Хочу все знать | 1 | 08-06-2007 08:25 |
|