C++ Первая программа - Калькулятор

Привет, я только начал изучать C++, и я пытаюсь сделать калькулятор, прямо сейчас у меня проблемы с топливом, которые я просто не знаю, как исправить в C++.

#include <iostream>
using namespace std;


int main() {
int a, b, c, d;

cout << "1. Saskaitiissana(+)" << endl;
cout << "2. atnnemssana(-)" << endl;
cout << "3. daliissana(/)" << endl;
cout << "4. reizinaassana(*)" << endl;

cin >> d;

switch(d){
case 1 :
cout << "ievadiet a un b lai saskaitiitu(+)" << endl;

cin >> a;
cin >> b;
c = a + b;

cout << "The sum of number 1 and number 2 is " << c << "\n" <<endl;
break;


case 2 :
cout << "ievadiet a un b lai atnnemtu(-)" << endl;

cin >> a;
cin >> b;
c = a - b;

cout << c << endl;
break;


case 3 :
cout << "ievadiet a un b lai reizinaatu(*)" << endl;

cin >> a;
cin >> b;
c = a * b;

cout << c << endl;
break;

case 4 :
cout << "ievadiet a un b lai dal'itu(/)" << endl;
cin >> a;
cin >> b;

if(b==0)
{
cout<<"Nulle neder! start over."<<endl;
}

c = a/b;

cout << c << endl;
break;
}



return 0;
}

Вещи, которые я еще должен сделать. Найдите самый простой способ использования программой только чисел. Также, когда я набираю число, это не может быть «пустое место». Кроме того, как я могу сделать так, чтобы после того, как он закончился и дал вам результат, вернуться к началу меню «Пуск»? и если я хочу выйти из программы, я нажимаю esc или 5?

Также с опцией выхода я думал использовать do, пока нажата «5», может ли это работать в С++?

Сейчас меня больше всего интересует, как проверить, что программа использует только числа и не имеет пустого места при добавлении чисел.

Спасибо за ваше время :)


person DoriaLatro    schedule 12.01.2015    source источник
comment
Что касается ограничения ввода символов только числами, проверьте stackoverflow.com/questions/18936664/ и cplusplus.com/forum/ новичок/21595   -  person Dzyann    schedule 12.01.2015
comment
Пожалуйста, найдите время, чтобы прочитать справочный центр. Это не общий форум для общих советов и указаний. Мы хотели бы сосредоточиться на конкретных проблемах программирования.   -  person BartoszKP    schedule 12.01.2015
comment
Улучшите свой код с помощью предложенных ссылок, и если у вас возникнут проблемы, задайте отдельные вопросы.   -  person Dzyann    schedule 12.01.2015


Ответы (2)


Для игнорирования нечислового ввода вы можете использовать этот фрагмент кода:

std::cin >> d;
while(std::cin.fail())
{
    std::cin.clear();
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
    std::cout << "Bad entry.  Enter a NUMBER: ";
    std::cin >> d;
}

или в стиле C:

while(scanf("%i",&d)!=1)
{
    fseek(stdin,0,SEEK_END);
}

Вы также можете поместить весь свой код в оператор while, чтобы перезапустить калькулятор после одной операции.

person Emadpres    schedule 12.01.2015

С учетом безопасного ввода:

//----------------------------------------------------------------------------
#include <iostream>
using namespace std;

//----------------------------------------------------------------------------
void SafeDouble (double &d)
{
    while (!(cin >> d))
    {   cin.clear();
        while (cin.get() != '\n');
        cout << "\tIncorrect. Try again\n\t";
    }
    cin.sync();
}
//----------------------------------------------------------------------------
int main()
{   
        cout << "The simpliest calculator\n";

        double a = 0.,b = 0.;
        cout << "\na = ";
        SafeDouble (a);
        cout << "b = ";
        SafeDouble (b);

        cout << "\nEnter operation sign: +, -, * or /\n";
        char op;
        cin >> op;
        cin.sync(); 

        switch (op)
        {
            case '+':   cout << a << " + " << b << " = " << a + b;
                        break;
            case '-':   cout << a << " - " << b << " = " << a - b;
                        break;
            case '*':   cout << a << " - " << b << " = " << a * b;
                        break;
            case '/':   if (b == 0.0)
                            cout << "Division by zero";
                        else
                            cout << a << " / " << b << " = " << a / b;
                        break;
            default:    cout << "Incorrect operation sign";
        }

        cin.get();
        return 0;
}
//-----------------------------------------------------------------------------
person IrineK    schedule 12.01.2015