プログラムとして間違っている? – プログラミング – Home

プログラムとして間違っている?
 
通知
すべてクリア

プログラムとして間違っている?


レイ
 レイ
(@レイ)
ゲスト
結合: 22年前
投稿: 15
Topic starter  

スタックを操作するプログラムを作ってみたんですが、
ちなみにプログラムはしたのやつです。

#include<stdio.h>
int stack[1024];
int sp=0;

push(int v)
{

sp=sp-1;
stack[sp]=v;

}

int pop()
{
int v;
v=stack[sp];
sp=sp+1;

return v;
}

main()
{
int d;

push(1);
push(2);
push(3);
d=pop();
printf(%d\n,d);
d=pop();
printf(%d\n,d);
push(4);
d=pop();
printf(%d\n,d);
push(5);
d=pop();
printf(%d\n,d);
d=pop();
printf(%d\n,d);
}

これで結果が





となり、思ったとおりになったんですが
どうもプログラムとして間違っているらしいんです。
どこが間違っているのかどなたか教えていただけないでしょうか?


引用解決済
トピックタグ
aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
 

sp は最初は 0 ですね。
最初に push すると -1 になりますね。
で、stack[ -1 ] ってドコですか?


返信引用
たく
 たく
(@たく)
ゲスト
結合: 21年前
投稿: 29
 

何点か

・mainの戻りはint。

・結果が全角で出る不思議

・pushでindexをインクリメントしてpopでデクリメントすればいいかも。
(あるいは、初期値を1024とするとか。)

・ていうか1024ってなに?

・スタックに何もつんでいないときの振る舞いが考慮されていない。


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

・pushでスタックサイズを越えた時の振る舞いも考慮されていない。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました