c言語のスタックについての質問です。
実装したのですが、標準入力の部分を
i 9 o i 8 i 7 o i 6 i 5 o i 4 o o i 3 i 2 i 1 o o e
といったように指示を一括してやるために直す方法を教えていただきたいです。
iはプッシュ
oはポップ
eは終了
sは入力時点でのスタックに格納された全体の内容表示
となってます。
#include<stdio.h>
#define MaxSize 100 //スタックサイズ
int stack[MaxSize];//スタック
int sp;//スタックポインタ
int push(int);
int pop(int *);
void show_stack();
void main(void)
{
int c,n;
while(printf("]"),(c=getchar())!=EOF){
rewind(stdin);
if(c=='i'||c=='I'){
printf("data--> ");
scanf("%d", &n); rewind(stdin);
if(push(n)==-1){
printf("スタックがいっぱいです\n");
}
}
if(c=='o'||c=='O'){
if(pop(&n)==-1)
printf("スタックは空です\n");
else
printf("stack data-->%d\n",n);
if(c=='e'||c=='E')
break;
}
if(c=='s'||c=='S')
show_stack();
}
}
int push(int n)//スタックにデータをつむプッシュ
{
if(sp<MaxSize){
++sp;
stack[sp]=n;
return 0;
}
else
return -1;
}
int pop(int *n)
{
if(sp>0){
*n=stack[sp];
sp--;
return 0;
}
else
return -1;
}
void show_stack()
{
int i;
puts("スタックの内容");
if(sp<0){
printf("スタックは空です。\n");
}
else
for(i=sp;i>=1;i--)
{
printf("%11d\n",stack[i]);
printf("\n");
}
}
No.4ベストアンサー
- 回答日時:
メインを自分流に変更してみました。
void main(void) {
int c,n;
while(printf("]"),(c=getchar())!=EOF){
rewind(stdin);
if(c=='i'||c=='I'){
printf("data--> "); scanf("%d", &n); rewind(stdin);
if(push(n)==-1){ printf("スタックがいっぱいです\n"); }
}
if(c=='o'||c=='O'){
if(pop(&n)==-1) printf("スタックは空です\n");
else printf("stack data-->%d\n",n);
} // 抜けているので追加
if(c=='e'||c=='E') break;
// } 余計なので削除
if(c=='s'||c=='S') show_stack();
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# プログラムの時、フローチャートはどうなりますか?図でお願いします。 int main(void) { 1 2022/10/01 22:45
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
error C2143: 構文エラー : ';'...
-
【C言語教えてください】sin波...
-
コンパイルエラーについて
-
勝率をプログラムに
-
c言語 成績表示のプログラムで...
-
小数点切捨て表示
-
コマンドプロンプトがすぐ消える
-
2の累乗を計算するプログラム...
-
unsigned int型について
-
printfでSegmentation fault
-
printf で二進表示を行いたい。
-
C言語で四則演算を使って結果が...
-
じゃんけんゲームをつくったの...
-
(C言語)めちゃくちゃな値にな...
-
C言語で連立一次方程式
-
WM_CLOSEで閉じれないウィンド...
-
(構造体)双方向連結リストの作成!
-
Visual Sutdio 2017 でのC言語...
-
ヌメロンの対戦相手
-
入力したお金の金額からお札の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
既約分数の表示プログラム
-
printf で二進表示を行いたい。
-
8人分のテストの点数を入力し、...
-
printf( " %2d", p * q );
-
strcmp
-
CTRL+Dでループを抜けるには
-
4の倍数を論理演算で表す。。
-
%P と %X の違い
-
【C言語教えてください】sin波...
-
c言語でAからZまでを表示する...
-
cshの文字列操作(0埋め)
-
万年カレンダーのC言語プログラ...
-
コマンドラインに出力した文字...
-
scanfに文字が入力されたときに...
-
コンパイルエラーについて
-
ホームページをC言語で作りたい...
-
改行について 1行に何個かづ...
-
台形の面積を求めるプログラム
-
なぜgccはstdio.hをインクルー...
おすすめ情報