#include <iostream>
using namespace std;
int main ()
{
setlocale (LC_CTYPE,"Russian");
int x=0;
do
{
stars:
cout << "1. Сложение, 2. Вычитание, 3. Умножение, 4. Деление " << endl;
cin >> x;
if(x == 1)
{
cout << "Введите первое слагаемое :" << endl;
double a;
cin >> a;
cout << "Введите второе слагаемое :" << endl;
double b;
cin >> b;
double s = a+b;
cout << "Сумма = " << s << endl;
}
if(x == 2)
{
cout << "Введите уменьшаемое :" << endl;
double c;
cin >> c;
cout << "Введите вычетаемое :" << endl;
double d;
cin >> d;
double r = c-d;
cout << "Разница = " << r << endl;
}
if (x == 3)
{
cout << "Введите первый множитель :" << endl;
double f;
cin >> f;
cout << "Введите второй множитель :" << endl;
double g;
cin >> g;
double t = f*g;
cout << "Сумма = " << t << endl;
}
if (x == 4)
{
cout << "Введите делимое :" << endl;
double i;
cin >> i;
cout << "Введите делитель :" << endl;
double h;
cin >> h;
double k = i/h;
cout << "Частное = " << k << endl;
}
}
while (1,2,3,4);
}
Другие языки программирования и технологии
Я написал прстой консольный калькулятр на c++ .Правдо еще не научился делать сразу несколько действий. Оцените.
При написании программ которые должны взаимодействовать с пользователем, даже таких простых, как калькулятор, нужно прежде всего думать: а удобно ли такой программой пользоваться?
Пусть сейчас нет знаний, как сделать разбор большого математического выражения со скобками, парой функций (хотя в идеале нужно стремится написать такую программу) , пусть он может делать только одно действие с двумя значениями, но посмотрите, сколько лишних вопросов задается пользователю, сначала выбрать действие, потом значения и т. д. Сравните:
#include <iostream>
using namespace std;
int main() {
while (1) {
double a, b, r;
char op;
cout << "? ";
if (cin >> a >> op >> b) {
bool badop = false;
switch (op) {
case '+': r = a + b; break;
case '-': r = a - b; break;
case '*': r = a * b; break;
case '/': r = a / b; break;
default: badop = true; break;
}
if (badop) cout << "ошибка\n"; else cout << r << endl;
} else {
cout << "ошибка\n";
cin.clear();
cin.sync();
}
}
}

Пусть сейчас нет знаний, как сделать разбор большого математического выражения со скобками, парой функций (хотя в идеале нужно стремится написать такую программу) , пусть он может делать только одно действие с двумя значениями, но посмотрите, сколько лишних вопросов задается пользователю, сначала выбрать действие, потом значения и т. д. Сравните:
#include <iostream>
using namespace std;
int main() {
while (1) {
double a, b, r;
char op;
cout << "? ";
if (cin >> a >> op >> b) {
bool badop = false;
switch (op) {
case '+': r = a + b; break;
case '-': r = a - b; break;
case '*': r = a * b; break;
case '/': r = a / b; break;
default: badop = true; break;
}
if (badop) cout << "ошибка\n"; else cout << r << endl;
} else {
cout << "ошибка\n";
cin.clear();
cin.sync();
}
}
}

Хрень. Напиши лучше программу чтобы она просто разбирала введенную строку и всё вычисляла сама, без выбора какое действие надо совершить, без ввода слагаемых отдельно.
Для человека, впервые пишущего программу - сойдет. Из очевидных помарок:
- непонятная метка stars, ее можно (и нужно) убрать;
- вводить логичнее символ, а не число (+ - * /);
- вместо кучи if-ов логичнее использовать switch - case;
- если уже используешь if-ы, то не забывай else расставлять;
- переменные типа double можно объявить один раз в начале, а не по всему тексту, и не 12 штук, а 3 (в одном случае a и b - слагаемые, в другом - сомножители и т. д.) ;
- while (1,2,3,4); - случайно работающий бред (оператор запятая возвращает значение второго операнда, т. е. 1,2,3,4 преобразовывается в 4, и это выражение эквивалентно while(4), а поскольку 4 - не 0, цикл вечный).
- непонятная метка stars, ее можно (и нужно) убрать;
- вводить логичнее символ, а не число (+ - * /);
- вместо кучи if-ов логичнее использовать switch - case;
- если уже используешь if-ы, то не забывай else расставлять;
- переменные типа double можно объявить один раз в начале, а не по всему тексту, и не 12 штук, а 3 (в одном случае a и b - слагаемые, в другом - сомножители и т. д.) ;
- while (1,2,3,4); - случайно работающий бред (оператор запятая возвращает значение второго операнда, т. е. 1,2,3,4 преобразовывается в 4, и это выражение эквивалентно while(4), а поскольку 4 - не 0, цикл вечный).
А почему произведение названо суммой?
Ну и выход из программы вообще то желателен! А для бесконечного цикла достаточно и while (1);
Сделайте теперь несколько действий и желательно со скобками!
Кстати неплохо бы реализовать калькулятор на основе "длинной арифметики"
Ну и выход из программы вообще то желателен! А для бесконечного цикла достаточно и while (1);
Сделайте теперь несколько действий и желательно со скобками!
Кстати неплохо бы реализовать калькулятор на основе "длинной арифметики"
вроде норм
Похожие вопросы
- консольный ввод в C++ ?
- Создаю консольную змейку на C++ и ncurses. Как зделать фиксированное время ожидания нажатия клавишы?
- сколько времени надо чтобы научится делать сайты а также программы? сайт на Html css c# c++ php программы аналогично
- Написать игру на Java или C.
- Привет, у меня вопрос. Какую программу или игру можно сделать в c# widows forms? Кто какие делал. Мне срочно нужно!
- Хочу сайты научится делать на движке
- Как написать движок. Как и можно ли научиться делать движки для игр
- Как написать данную программу сам пытался ( C++ )
- Стоит ли учить сразу несколько ЯПов?
- Подскажите пожалуйста, на каком языке написана программа, на С или C++