Я тут решил с дельфи перейти на плюсы, но это не важно, сейчас я решил попрактиковаться и сделать простейший калькулятор.
Но хоть и всё работает, в конце он всегда пишет, что ответ 0!посмотрите пожалуйста кодик)
////////////////////////////
#include
#include
using namespace std;
int main()
{
setlocale(0, "");
long long int a = 0, b = 0, rez= 0;
char c = 0;
cout << "Сначала введите первое число: ";
cin >> a;
cout << "------------------------------------------------------------------------------" << endl;
cout << "" << endl;
cout << "Теперь введите арифметический знак (1-+,2--,3-*,4-/): ";
cin >> c;
cout << "------------------------------------------------------------------------------" << endl;
cout << "" << endl;
cout << "Ну а теперь введите второе число: ";
cin >> b;
cout << "------------------------------------------------------------------------------" << endl;
cout << "" << endl;
if (c == 1)
rez = a + b;
else if (c == 2)
rez = a - b;
else if (c == 3)
rez = a * b;
else if (c == 4 )
rez = a / b;
cout << rez << endl;
system("pause");
return 0;
}
//////////////////////////////////////////////////
Другие языки программирования и технологии
c++ ошибка программы
char сравнивается с целым. Некорректно, ни одна из операций не выбирается, посему ответ - ноль
Жанат Нурбатыров
вот сравнивать как раз можно. только вместо указанного значения ноль будет его код, по-моему)
Сакен Бегжан
О, а тут начало работать))) СПАСИБО!) надо будет запомнить, и потом учитывать)))
Если считать эту программу упражнением для начинающих, то можно написать так:
#include "iostream"
using namespace std;
int main(){
double a,b,c,rez;
cout<<"-------------\nNumber: "; cin >> a;
cout<<"-------------\nOperation (1-+,2--,3-*,4-/): "; cin >> c;
cout<<"-------------\nNumber: "; cin >> b;
if(c==1)rez=a+b;
if(c==2)rez=a-b;
if(c==3)rez=a*b;
if(c==4)rez=a/b;
cout<<"-------------\nResult="<<rez<<endl; cin.get(); cin.get();}
Красивее был бы прямой ввод знака операции и использование switch:
#include "iostream"
using namespace std;
int main(){
double a,b,r=0; char c;
cout<<"-------------\nNumber: "; cin>>a;
cout<<"-------------\nOperation (+ - * /): "; cin>>c;
cout<<"-------------\nNumber: "; cin>>b;
switch(c){case'+':r=a+b;break; case'-':r=a-b;break; case'*':r=a*b;break; case'/':r=a/b;}
cout<<"-------------\nResult="<<r<<endl; cin.get(); cin.get();}
#include "iostream"
using namespace std;
int main(){
double a,b,c,rez;
cout<<"-------------\nNumber: "; cin >> a;
cout<<"-------------\nOperation (1-+,2--,3-*,4-/): "; cin >> c;
cout<<"-------------\nNumber: "; cin >> b;
if(c==1)rez=a+b;
if(c==2)rez=a-b;
if(c==3)rez=a*b;
if(c==4)rez=a/b;
cout<<"-------------\nResult="<<rez<<endl; cin.get(); cin.get();}
Красивее был бы прямой ввод знака операции и использование switch:
#include "iostream"
using namespace std;
int main(){
double a,b,r=0; char c;
cout<<"-------------\nNumber: "; cin>>a;
cout<<"-------------\nOperation (+ - * /): "; cin>>c;
cout<<"-------------\nNumber: "; cin>>b;
switch(c){case'+':r=a+b;break; case'-':r=a-b;break; case'*':r=a*b;break; case'/':r=a/b;}
cout<<"-------------\nResult="<<r<<endl; cin.get(); cin.get();}
При использование интов даже long long происходит жесткое приведение типов - потому результат может быть равен нулю либо в операциях умножения и деления сначала приводите все к флоат а потом обратно либо юзайте флоат
Сакен Бегжан
спасибо, попробую
Сакен Бегжан
Не работает (((поменял с long long int на float, не выходит ((
есть подозрение, что ни одна из веток
if (c == XXX)
не выполняется
вводи в качестве операций плюсы
и сравнивай так
if (c == '+')
=================
UPD: Рекомендую подружиться с отладчиком. Прежде чем задавать такие вопросы, обращайся к нему. Если хорошо попросишь, он тебе покажет как покомандно выполняется твоя программа...
if (c == XXX)
не выполняется
вводи в качестве операций плюсы
и сравнивай так
if (c == '+')
=================
UPD: Рекомендую подружиться с отладчиком. Прежде чем задавать такие вопросы, обращайся к нему. Если хорошо попросишь, он тебе покажет как покомандно выполняется твоя программа...
Сакен Бегжан
На счёт отладчика, как сделать так, что-бы он показывал в какой я сейчас части кода? MS visual studio
проверь чему равна переменная с после ввода любой цифры. Возможно, что ей присваивается код цифры в таблице кодировки. Если так, то решение проблемы очень простое) просто поменять тип char на int
а почему инклуды пустые?)
Юрий Саксонов
здешний парсер режет. Особенность сервиса
Сакен Бегжан
Скопировал с ошибкой... Там написано и )))
Аскар Тюленов
я так подозреваю, это потому что новая версия сайта думает что все, что заключено между > и < , есть тег.
Похожие вопросы
- В чем ошибка программы? ? C++
- Visual Studio C++, ошибка : "не удается найти указанный файл"
- heloword не запускается!? вопрос внутри!и код C+ builder! программа на С!
- C++(консоль) Программа, которая выводит данные треугольников со стороной максимум 5000
- сколько времени надо чтобы научится делать сайты а также программы? сайт на Html css c# c++ php программы аналогично
- Программа C++ Напишите программу которая переводит из десятичной в двоичную систему счисления (C++)
- В чем ошибка программы? ? с++. Выводит матрицу не полностью
- Visual C++ написать программу. Ребят help.
- C++, написать программу, цикл for Программа, которая определяет является ли введенное число простым.
- C# Сделать программу которая разделяет текст на предложения.