хорошо, поэтому в конечном итоге я собираюсь сделать постфиксный калькулятор с реализацией стека и получить входные данные, такие как 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++, и он оценивает это уравнение.
Я понял это, я испортил и установил значение char = cin.peek(), и должен был просто использовать cin.peek() в функциях, время, затрачиваемое на простые ошибки: D.
else if ( (value = '+') )
должно быть
else if (value == '+')
Используйте ==
для сравнения.