Варианты решения задачки №1 (программа «Элементарный калькулятор») на языке C++. Первый вариант — с использованием оператора выбора switch (...) case ... :
// Программа "Простейший калькулятор"
#include <iostream>
using namespace std;
int main()
{
int a, b; // Переменные-операнды (целого типа)
char op; // Переменная-символ операции (символьного типа)
// Вводим исходные данные
cout << "The simplest calculator." << endl;
cout << "Enter arithmetic expression [e.g. a + b ]: ";
cin >> a >> op >> b;
// Проверяем операцию и вычисляем выражение
switch (op) {
case '+':
cout << a << op << b << " = " << a + b << endl;
break;
case '-':
cout << a << op << b << " = " << a - b << endl;
break;
case '*':
cout << a << op << b << " = " << a * b << endl;
break;
case '/':
if (b == 0)
cout << "...Division by zero!" << endl; // Деление на ноль!
else
cout << a << op << b << " = " << (double)a / b << endl;
break;
default:
cout << "...Unknown operation!" << endl; // Неизвестная операция!
}
return 0; // Завершаем программу (выходим) с кодом 0
}
Еще один вариант, который в целом мало отличается от первого — с использованием условного оператора ( if (...) ... else ... ):
// Программа "Простейший калькулятор"
#include <iostream>
using namespace std;
int main()
{
int a, b; // Переменные-операнды (целого типа)
char op; // Переменная-символ операции (символьного типа)
// Вводим исходные данные
cout << "The simplest calculator." << endl;
cout << "Enter arithmetic expression [e.g. a + b ]: ";
cin >> a >> op >> b;
// Проверяем операцию и вычисляем выражение
if (op == '+')
cout << a << op << b << " = " << a + b << endl;
else
if (op == '-')
cout << a << op << b << " = " << a - b << endl;
else
if (op == '*')
cout << a << op << b << " = " << a * b << endl;
else
if (op == '/')
if (b == 0)
cout << "...Division by zero!" << endl;
else
cout << a << op << b << " = " << (double)a / b << endl;
else
cout << "...Unknown operation!" << endl;
return 0; // Завершаем программу (выходим) с кодом 0
}
То же самое, но для любителей более компактного оформления:
// Программа "Простейший калькулятор"
#include <iostream>
using namespace std;
int main()
{
int a, b; // Переменные-операнды (целого типа)
char op; // Переменная-символ операции (символьного типа)
// Вводим исходные данные
cout << "The simplest calculator." << endl;
cout << "Enter arithmetic expression [e.g. a + b ]: ";
cin >> a >> op >> b;
// Проверяем операцию и вычисляем выражение
if (op == '+')
cout << a << op << b << " = " << a + b << endl;
else if (op == '-')
cout << a << op << b << " = " << a - b << endl;
else if (op == '*')
cout << a << op << b << " = " << a * b << endl;
else if (op == '/')
if (b == 0)
cout << "...Division by zero!" << endl;
else
cout << a << op << b << " = " << (double)a / b << endl;
else
cout << "...Unknown operation!" << endl;
return 0; // Завершаем программу (выходим) с кодом 0
}
И еще один вариант — с использованием скобок (операторных и в арифметических выражениях), которые в данном конкретном случае, собственно, ничего не меняют:
// Программа "Простейший калькулятор"
#include <iostream>
using namespace std;
int main()
{
int a, b; // Переменные-операнды (целого типа)
char op; // Переменная-символ операции (символьного типа)
// Вводим исходные данные
cout << "The simplest calculator." << endl;
cout << "Enter arithmetic expression [e.g. a + b ]: ";
cin >> a >> op >> b;
// Проверяем операцию и вычисляем выражение
if (op == '+') {
cout << a << op << b << " = " << (a + b) << endl;
} else if (op == '-') {
cout << a << op << b << " = " << (a - b) << endl;
} else if (op == '*') {
cout << a << op << b << " = " << (a * b) << endl;
} else if (op == '/') {
if (b == 0)
cout << "...Division by zero!" << endl;
else
cout << a << op << b << " = " << ((double)a / b) << endl;
} else {
cout << "...Unknown operation!" << endl;
}
return 0; // Завершаем программу (выходим) с кодом 0
}