scanfを使用してキーボードからスタック配列に値をスキャンする際に問題があると思います。スキャンした値をスタック内の配列に入力する方法がわかりません。Cコードを修正してください。ユーザー入力を要求するメインメソッドを確認し、それらを配列にプッシュしてみてください。
#include<stdio.h>
#define STACKSIZE 5
struct stack
{
float data[STACKSIZE];
int sp;
};
struct stack sta={{0},-1};
//push method
void push(float n)
{
sta.data[++sta.sp]==n;
//onlystack.data[++onlystack.sp]=x;
}
//pop method
float pop()
{
return sta.data[sta.sp--];
}
//top method
float top()
{
return sta.data[sta.sp];
}
//full method
int full()
{
return (sta.sp==STACKSIZE-1);
}
//empty method
int empty()
{
return (sta.sp==-1);
}
int main()
{
int x, y;
int temp;
for (x=0; x<STACKSIZE; x++)
{
**printf("Enter float to be stored in the stack");
scanf("%f", &temp);
push(temp);**
}
while(!empty(sta))
{
for (y=0; y<STACKSIZE; y++)
{
printf("\t%f",pop());
}
}
printf("%f", top());
return 0;
}
考え:
push()
、割り当てを実行する代わりに、同等性をテストします。temp
タイプはintです。フロートである必要があります。empty()
引数をとらず、引数を渡します。printf("%f", top())
は、を出力するため、未定義の動作を呼び出しますsta.data[-1]
。pop()
印刷の周りにwhileループとforループは実際には必要ありません。whileループを実行できるはずです。'\n'
各フロートの後に文字を印刷する必要があります。これにより、各フロートがそれぞれの行に表示されます。これらのエラーが修正されると、コードは正しく機能しているように見えます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加