|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - помогите разобраться |
|
|
C/C++ - помогите разобраться
|
|
Новый участник Сообщения: 11 |
Всем доброго времени суток. Совсем недавно начал изучать С++ и вот решил попробовать написать первую программу. Пишу в 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 |
|
Необычный Сообщения: 4466
|
Профиль | Сайт | Отправить 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 |
|
Необычный Сообщения: 4466
|
Профиль | Сайт | Отправить 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 | |
|