前提・実現したいこと
逆ポーランド記法のスタックの問題で合格できません。
以下のソースコードのどこが間違えているでしょうか?
AIZU ONLINE JUDGEの以下のリンクの問題です。
お手数をかけいたしますが、問題はサイトをご覧ください。
https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/3/ALDS1_3_A
発生している問題・エラーメッセージ
答えがマイナスになると符号がつきません。
以下のソースコードの場合の入力と出力の例
3 5 - 2
該当のソースコード
C++
1#include <bits/stdc++.h> 2using namespace std; 3 4#define MAX 100000 5 6class Stack { 7 private: 8 int values[MAX]; 9 int top; 10 11 public: 12 Stack(); 13 void push(int x); 14 int pop(); 15 bool is_full(); 16 bool is_empty(); 17}; 18 19Stack::Stack() { top = 0; } 20 21void Stack::push(int x) { 22 top++; 23 values[top] = x; 24} 25 26int Stack::pop() { 27 top--; 28 return values[top + 1]; 29} 30 31bool Stack::is_full() { return top >= MAX - 1; } 32 33bool Stack::is_empty() { return top == 0; } 34 35int main() { 36 char c; 37 Stack s; 38 while (cin >> c) { 39 int a, b; 40 switch(c) { 41 case '+': 42 a = s.pop(); 43 b = s.pop(); 44 s.push(a + b); 45 break; 46 case '-': 47 a = s.pop(); 48 b = s.pop(); 49 s.push(a - b); 50 break; 51 case '*': 52 a = s.pop(); 53 b = s.pop(); 54 s.push(a * b); 55 break; 56 default: 57 s.push(atoi(&c)); 58 break; 59 } 60 } 61 62 cout << s.pop() << endl; 63 64 return 0; 65}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/27 01:46