このトピックを開いてくださってありがとうございます。
次のようなプログラムを作りたいのですがわからないところがあって行き詰っています。どなたかご教示頂けると嬉しいです。
「1次元配列を用いてスタックを実現する。
キーボードからのpush-down/pop-up機能がついたプログラムを作る。条件は下記の通り。
1.キーボードから文字を1文字ずつ入力してスタックを操作する。
2.スタック操作の仕様はキーボードから文字を1文字ずつ入力する際に
・0を入力した場合プログラム終了
・1を入力した場合、1文字pop-upした後pop-upした文字とスタックの内容を表示
・その他の文字を入力した場合その文字をpush-downした後スタックの内容を表示
」
このような内容です。push-downするのは文字でなければいけないのですが、同時に0や1も格納できる変数を設定するにはどうしたらいいのかわからなくて困っています。0や1を入力した場合と文字を入力した場合でわけてそれぞれint型の変数やchar型の変数に格納できればいいのですがいろいろ調べたりしてみても解決法が見つからなかったので質問させていただきました。
どうぞよろしくお願いします。
変数について質問です。
Re: 変数について質問です。
char ch;
ch = getchar();
if (ch == '0') {
というように「0」という文字を扱えます。
ch = getchar();
if (ch == '0') {
というように「0」という文字を扱えます。
Re: 変数について質問です。
>0や1を入力した場合と文字を入力した場合でわけてそれぞれint型の変数やchar型
これをそのままプログラムに直すのであれば、switchやifで0か1が入力された時にそれぞれ終了、popと表示とすればいいのではないでしょうか?
それで別の変数が来た時はpush処理します。
擬似コードを載せておきます。
// ifを使った場合
// switchを使った場合
あとは、自分でいろいろと編集してみてください。
追記:
あ、書いてる最中にたいちうさんと被ってしまいました^^;
申し訳ない。。。
これをそのままプログラムに直すのであれば、switchやifで0か1が入力された時にそれぞれ終了、popと表示とすればいいのではないでしょうか?
それで別の変数が来た時はpush処理します。
擬似コードを載せておきます。
// ifを使った場合
char a;
a = getchar();
if( a == '0' ){
// 0の時の処理
}
else if( a == '1' ){
// 1の時の処理
}
else{
// その他の場合の処理
}
char a;
a = getchar();
switch( a ){
case '0':
// 0の時の処理
case '1':
// 1の時の処理
default:
// その他の場合の処理
}
追記:
あ、書いてる最中にたいちうさんと被ってしまいました^^;
申し訳ない。。。
Re: 変数について質問です。
結果
つまり
戻ってきてるのは数値ではなく数字ですね。
====
おまけで・・・
結果
確かに・・・int型ですね。
charは表示されてないし・・・
(大きさ違うからね・・・)
戻ってきてるのは数値ではなく数字ですね。
====
おまけで・・・
int main(void){
int a=getchar();
char b;
printf("数値%d\t数字%c\n"
"数値%d\t数字%c",a,a,b,b);
return 0;
}
確かに・・・int型ですね。
charは表示されてないし・・・
(大きさ違うからね・・・)
ニャン!!\(゜ロ\)(/ロ゜)/