質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1115閲覧

[AOJ]スタックを使った逆ポーランド記法の問題で合格できません

smile_20200722

総合スコア11

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/06/26 16:24

前提・実現したいこと

逆ポーランド記法のスタックの問題で合格できません。
以下のソースコードのどこが間違えているでしょうか?

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}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

C++

1 case '-': 2 a = s.pop(); 3 b = s.pop(); 4 s.push(a - b); // b - a じゃなくて? 5 break;

投稿2021/06/26 16:50

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

smile_20200722

2021/06/27 01:46

epistemeさん コメントありがとうございます。 スタックのことをちゃんと理解できていませんでした。 ご指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問