変数について質問です。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
hatch

変数について質問です。

#1

投稿記事 by hatch » 9年前

このトピックを開いてくださってありがとうございます。
次のようなプログラムを作りたいのですがわからないところがあって行き詰っています。どなたかご教示頂けると嬉しいです。

「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型の変数に格納できればいいのですがいろいろ調べたりしてみても解決法が見つからなかったので質問させていただきました。
どうぞよろしくお願いします。

たいちう
記事: 418
登録日時: 9年前

Re: 変数について質問です。

#2

投稿記事 by たいちう » 9年前

char ch;
ch = getchar();
if (ch == '0') {
というように「0」という文字を扱えます。

ぬっち
記事: 105
登録日時: 9年前
連絡を取る:

Re: 変数について質問です。

#3

投稿記事 by ぬっち » 9年前

>0や1を入力した場合と文字を入力した場合でわけてそれぞれint型の変数やchar型
これをそのままプログラムに直すのであれば、switchやifで0か1が入力された時にそれぞれ終了、popと表示とすればいいのではないでしょうか?
それで別の変数が来た時はpush処理します。
擬似コードを載せておきます。

// ifを使った場合

コード:

char a;

a = getchar();
if( a == '0' ){
       // 0の時の処理
}
else if( a == '1' ){
       // 1の時の処理
}
else{
       // その他の場合の処理
}
// switchを使った場合

コード:

char a;

a = getchar();
switch( a ){
    case '0':
       // 0の時の処理
    case '1':
       // 1の時の処理
    default:
       // その他の場合の処理
}
あとは、自分でいろいろと編集してみてください。

追記:
あ、書いてる最中にたいちうさんと被ってしまいました^^;
申し訳ない。。。

アバター
パコネコ
記事: 139
登録日時: 9年前
住所: 大阪

Re: 変数について質問です。

#4

投稿記事 by パコネコ » 9年前

ちょこっと違う方法も・・・

コード:

char a;
int b;
//aに数字が入ってるとして
if('0'<=a && a<='9')b=a-'0';
これでbに数値が入るはず・・・
====
もししたの通りだったらですが・・・

コード:

int main(void){
	int a;
	for(a=0;a<10;a++)
		printf("数字%c\t数値%d\n",'0'+a,'0'+a);
	return 0;
}
結果

コード:

数字0   数値48
数字1   数値49
数字2   数値50
数字3  数値51
数字4  数値52
数字5  数値53
数字6   数値54
数字7   数値55
数字8   数値56
数字9  数値57
ニャン!!\(゜ロ\)(/ロ゜)/

初級者
記事: 200
登録日時: 9年前

Re: 変数について質問です。

#5

投稿記事 by 初級者 » 9年前

確か、getchar()の戻り値の型はintだったような気がするんですけど…。

アバター
パコネコ
記事: 139
登録日時: 9年前
住所: 大阪

Re: 変数について質問です。

#6

投稿記事 by パコネコ » 9年前

コード:

int main(void){
	int a=getchar();
	printf("数値%d\t数字%c",a,a);
	return 0;
}
結果

コード:

6
数値54  数字6
つまり
戻ってきてるのは数値ではなく数字ですね。
====
おまけで・・・

コード:

int main(void){
	int a=getchar();
	char b;
	printf("数値%d\t数字%c\n"
		"数値%d\t数字%c",a,a,b,b);
	return 0;
}
結果

コード:

6
数値54  数字6
数値0   数字  
確かに・・・int型ですね。
charは表示されてないし・・・
(大きさ違うからね・・・)
ニャン!!\(゜ロ\)(/ロ゜)/

閉鎖

“C言語何でも質問掲示板” へ戻る