Р. Лафоре. ООП в С++. Завдання 3.4

Створіть еквівалент калькулятора, що виконує чотири основні арифметичні операції. Програма повинна запитувати ввід користувачем першого операнда, знака операції та другого операнда. Для зберігання операндів слід використати змінні дійсного типу. Вибрати операцію можна за допомогою оператора switch. Вкінці програма повинна відобразити результат на екрані. Результат роботи програми із користувачем може виглядати отак:
Введіть перший операнд, операцію та другий операнд: 10/3
Результат: 3.33333
Виконати ще одну операцію (y/n)? y
Введіть перший операнд, операцію та другий операнд: 12+100
Результат: 112
Виконати ще одну операцію (y/n)? n
Відповідь:
#include <iostream>
using namespace std;
int main()
{
    double a, b, c;
    char sign, yesno;
    startprogram:
    cout << "Введіть перший операнд, операцію та другий операнд: ";
    cin >> a >> sign >> b;
    switch(sign)
    {
    case '+': c = a + b; break;
    case '-': c = a - b; break;
    case '*': c = a * b; break;
    case '/': c = a / b; break;
    }
    cout << "Результат: " << c << endl;
    cout << "Виконати ще одну операцію (y/n)? ";
    cin >> yesno;
    if (yesno=='y')
        goto startprogram;
    return 0;
}
В даному прикладі постараюся описати оператор switch. Як бачимо, він бере одну змінну і надає кілька варіантів роботи з нею. Тобто в даному випадку нам потрібно було визначити, який знак математичної операції було введено. Для цього була створена змінна sign, а потім після введення із клавіатури та присвоєння цій змінній значення оператор switch перевірив, який саме знак був уведений, та застосував відповідну математичну операцію до змінних a та b.

Зверніть увагу:
  1. змінна, з якою проводиться опрацювання оператором switch, пишеться в круглих дужках;
  2. можливе значення (якщо це символьна змінна) записується в одинарних лапках, після нього ставиться двокрапка;
  3. після блока операцій ставиться крапка з комою;
  4. якщо потрібно виконати тільки один блок case, після кожного треба поставити оператор виходу break;
Оскільки я тут промовився і сказав фразу «блок операцій», то відразу уточню, що вираз
case '+': c = a + b; break;
не обов'язково мусить бути записаний в одному рядку. Він також може виглядати, як група операцій, обмежених фігурними дужками, як у оператора if:
switch(sign)
    {
    case '+':
        {
            c = a + b;
            break;
        }
    case '-':
        {
            c = a - b;
            break;
        }
    case '*':
        {
            c = a * b;
            break;
        }
    case '/':
        {
            c = a / b;
            break;
        }
    }

Немає коментарів:

Дописати коментар

Функції gotoxy(), clrscr(), getch() та getche() для GCC Linux

У цій статті Ви дізнаєтесь, як можна використовувати функції  gotoxy(), getche(), getch() та clrscr() у GCC Linux . У компіляторі TurboC (...