数値を入力して下さい(正:格納、負:取出)-> 56
num=1 [56 ]
数値を入力して下さい(正:格納、負:取出)-> 83
num=2 [56 83 ]
数値を入力して下さい(正:格納、負:取出)-> 27
num=3 [56 83 27 ]
このように表示したいのですが、実行結果がnum1=[56] num2=[83] num3=[27]というようになってしまいます。どうすれば、良いですか?
stackの配列の使い方について教えてください。
----------------------------------------------------------c言語
コード
#include <stdio.h>
#define N 10
int func(int);
int main()
{
int n,r;
while(1) {
printf("数値を入力して下さい(正:格納、負:取出)-> ");
scanf("%d",&n);
if (n==0) break;
r=func(n);/* スタックに格納または取出*/
func(0); /* スタックを表示 /
if (r>0) printf("取り出したデータ: %d\n",r); / 取得データの表示 */
else if (r==-1) printf("エラー(データがありません)\n");
else if (r==-2) printf("エラー(オーバーフロー)\n");
}
return 0;
}
/* 引数::正の整数:スタックに格納、負の整数:スタックから取出
0:スタックの中身を表示
戻り値:スタックから取り出した値。取出時スタックが空なら-1,
格納時スタックがいっぱいのとき-2、表示の際はいつも0 を返す*/
int func(int x)
{
static int stack[N]; /* スタック本体 /
static int num=0; / データ数 */
int i;
if(x>0){
//stack[num]=x;
num++;
stack[num]=x;
for(i=0;i<num;i++){
} printf("num=%d [%d]\n",num,stack[num]);
}
else if(x<0){
num--;
x=stack[num];
return x;
}
}
回答3件
あなたの回答
tips
プレビュー