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" е натиснат, може ли това да работи в c++?

В момента най-много ме интересува как да проверя програмата да използва само числа и да няма празно място при добавяне на числа.

Благодаря ви за отделеното време :)


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