用栈存数据,遇见符号抽两个数据计算即可
代码#includeusing namespace std; string* stack[120]; double data[120]; int size = 0; int main() { string s; while(cin >> s) { string* ss = new string; ss->erase(); ss->append(s); stack[size++] = ss; if(cin.get() == 'n') break; } // for(int i = 0; i < size; i++) // cout << *stack[i] << endl; int Dsize = 0; while(size ) { size--; if(*stack[size] == "+") { double a = data[--Dsize]; double b = data[--Dsize]; double c = a + b; data[Dsize++] = c; } else if(*stack[size] == "-") { double a = data[--Dsize]; double b = data[--Dsize]; double c = a - b; data[Dsize++] = c; } else if(*stack[size] == "*") { double a = data[--Dsize]; double b = data[--Dsize]; double c = a * b; data[Dsize++] = c; } else if(*stack[size] == "/") { double a = data[--Dsize]; double b = data[--Dsize]; double c = a / b; data[Dsize++] = c; } else { char str[10]; for(int i = 0; i < 10; i++) str[i] = 0; for(int i = 0; i < stack[size]->length(); i++) { str[i] = stack[size]->at(i); } data[Dsize++] = atof(str); } // for(int i = 0; i < Dsize; i++) // cout << data[i] <<" "; // cout << endl; } printf("%.6fn",data[--Dsize]); }



