Другие языки программирования и технологии

Я написал прстой консольный калькулятр на c++ .Правдо еще не научился делать сразу несколько действий. Оцените.

#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);

}
При написании программ которые должны взаимодействовать с пользователем, даже таких простых, как калькулятор, нужно прежде всего думать: а удобно ли такой программой пользоваться?
Пусть сейчас нет знаний, как сделать разбор большого математического выражения со скобками, парой функций (хотя в идеале нужно стремится написать такую программу) , пусть он может делать только одно действие с двумя значениями, но посмотрите, сколько лишних вопросов задается пользователю, сначала выбрать действие, потом значения и т. д. Сравните:

#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();
        }
    }
}

Кот Базилио
Кот Базилио
87 476
Лучший ответ
Хрень. Напиши лучше программу чтобы она просто разбирала введенную строку и всё вычисляла сама, без выбора какое действие надо совершить, без ввода слагаемых отдельно.
Для человека, впервые пишущего программу - сойдет. Из очевидных помарок:
- непонятная метка 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, цикл вечный).
Багомед Алиев
Багомед Алиев
62 068
А почему произведение названо суммой?
Ну и выход из программы вообще то желателен! А для бесконечного цикла достаточно и while (1);
Сделайте теперь несколько действий и желательно со скобками!
Кстати неплохо бы реализовать калькулятор на основе "длинной арифметики"
вроде норм