こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

独習C++

お世話になります。
環境はWindowsXP+BorlandC++コンパイラです。
独習C++で勉強しているのですが、練習問題1.5.1で、次のようなプログラムを作成しました。

※インデントのため全角スペースを使用しています。
#include<iostream>
using namespace std;
#define SIZE 10
class stack{
 char stck[SIZE];
 int tos;
public:
 void init();
 void push(char ch);
 char pop();
};
void stack::init()
{
 tos = 0;
}
void stack::push(char ch)
{
 if(tos == SIZE)
 {
  cout << "スタックは一杯です。";
  return;
 }
 stck[tos] == ch;
 tos++;
}
char stack::pop()
{
 if(tos==0)
 {
  cout << "スタックは空です";
  return 0;
 }
 tos--;
 return stck[tos];
}

int main(void)
{
 stack s1;
 int i;
 s1.init();
 s1.push('a');
 s1.push('b');
 s1.push('c');
 for(i=0; i<3; i++)
 {
  cout << "s1をポップする:" << s1.pop() << "\n";
 }
 return 0;
}

期待する動作は
s1をポップする:c
s2をポップする:b
s3をポップする:a
なんですが、コンソールでは、
s1をポップする:A
s2をポップする:ェ
s3をポップする:h
と表示されます。
テキストを写しただけなのでコード上は問題ないように見えるのですが、どこがおかしいのでしょうか?
原因と対策をご教示ください。
宜しくお願い致します。

投稿日時 - 2008-02-18 17:07:30

QNo.3787495

困ってます

質問者が選んだベストアンサー

> stck[tos] == ch;
これ、'=' のうち間違いじゃない?

投稿日時 - 2008-02-18 17:15:17

お礼

お恥ずかしいことに写しミスでした^^;。
回答ありがとうございました。

投稿日時 - 2008-02-18 17:21:12

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)