Проблема с cin.peek () и проблемы с получением правильного ввода

0

хорошо, поэтому в конечном итоге я собираюсь сделать постфиксный калькулятор с реализацией стека и получить входные данные, такие как 45 20+. У меня просто возникают проблемы с правильной вставкой ввода, я хочу игнорировать пробелы, если пользователь вводит число, я хочу сгенерировать двойной, если пользователь вводит оператор, например +, я хочу ввести символ. Что я до сих пор таков:

  1 #include"dstack.h"
  2
  3 #include<iostream>
  4 #include<stdlib.h>
  5 using namespace std;
  6
  7 void error();
  8
  9 int main()
 10 {
 11  char value = cin.peek();
 12  char op;
 13  double num;
 14
 15  while(!cin.eof())
 16  {
 17   if( (isdigit(value)) ) //|| value == '.') )
 18   {
 19    cin >> num;
 20    cout << "Your number is: " << num << endl;
 21   }
 22
 23   else if( (isspace(value)) )
 24   {
 25    cin.ignore();
 26   }
 27
 28   else if ( (value = '+') )
 29   {
 30    cin >> op;
 31    cout << "You entered a char: " << op << endl;
 32   }
 33
 34   else if ( (isalpha(value)) )
 35   {
 36    error();
 37   }
 38  }
 39  cout << "No more input" << endl;
 40 }
 41
 42 void error()
 43 {
 44  cerr << "error" << endl;
 45  exit(1);
 46 }

Поскольку я просто тестирую, я не помещаю ничего в стек или что-то в этом роде, а theres больше операторов, я просто тестирую "+", чтобы заставить его работать. Что происходит, если я вхожу в число, он работает нормально, но скажу, что я вхожу в 30, нажмите enter, затем введите +, а затем введите, он зацикливает мой cout для оператора количества в миллион раз. Является ли моя программа застревает в каждом выражении if? Любая помощь будет оценена по достоинству, и если потребуется какая-либо разъяснение или другая информация, просто спросите. Должны быть пробелы между числами, пустое пространство должно игнорироваться, и между операторами не должно быть пробелов. В конце концов, что должно случиться, пользователь вводит что-то вроде 30 30 30++, и он оценивает это уравнение.

Теги:
string
char
stack
cin

2 ответа

0

Я понял это, я испортил и установил значение char = cin.peek(), и должен был просто использовать cin.peek() в функциях, время, затрачиваемое на простые ошибки: D.

0
else if ( (value = '+') )

должно быть

 else if (value == '+')

Используйте == для сравнения.

  • 0
    Спасибо, я видел это и исправил это соответственно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню