2015-01-12 3 views
-2

Привет, я только начал изучать C++ и Im, пытаясь сделать калькулятор, прямо сейчас с проблемами фью, которые я просто не знаю, как исправить на 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++?

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

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

+0

Относно ограничение ввода символов только на номера проверить http://stackoverflow.com/questions/18936664/how-to-limit-input-to-numbers- только и http://www.cplusplus.com/forum/beginner/21595/ – Dzyann

+0

Пожалуйста, найдите время, чтобы прочитать [помощь]. Это не общий форум для предоставления широких рекомендаций и рекомендаций. Мы хотели бы сосредоточиться на конкретных проблемах программирования. – BartoszKP

+0

Улучшите свой код ссылками, и если вы столкнулись с проблемами, отправьте отдельные вопросы. – Dzyann

ответ

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

You также может поместить всю цепочку кода в оператор while для повторного запуска калькулятора после одной операции.

1

Принимая во внимание безопасный вход:

//---------------------------------------------------------------------------- 
#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; 
} 
//----------------------------------------------------------------------------- 
Смежные вопросы