スタックを用いて整数配列の順序を入れ替えるプログラム

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

スタックを用いて整数配列の順序を入れ替えるプログラム

#1

投稿記事 by ずんだもち » 15年前

C言語プログラミングの超初心者です。

「スタックを用いて0~9の10個の整数配列を5個ずつ並び替えるプログラムをつくる」
(0123456789→4321098765)
という課題に取り組んでいます。
お恥ずかしいのですが私はC言語の基礎(繰り返しや関数の定義)を習った程度のレベルで、
スタック・プッシュ・ポップの関係は何とか理解しましたが、どのようにプログラミングを組めばよいのかわかりません…!

上記の課題の前提として、「0~100までの整数の並び順を逆にする」(0 1 2…100→100 99 98…0)が与えられていました。途中で分からなかった部分もあり、
致命的な間違いもしているかもしれないのですが、記述させていただきます。こちらのプログラムが参考になるようであれば、使っていただければ幸いです。
#include<stdio.h>
#include<stlib.h>
#define STACKLENGTH 100
#define LENGTH 10
int stack[STACKLENGTH];
int stack_p = 0;
void print(void);
void Print(char*,int*a,int);
int main(int arg,char** argv){
int a[LENGTH];
int ii;
for (ii=0; ii<LENGTH, ii++){
a[ii]= rand()%101;
}
Print("入れ替え前",a,LENGTH);
for(ii=0; ii<LENGTH; ii++){
push(a[ii]);
}
for (ii=0; ii){
a[ii]=Pop();
}
Print("入れ替え後",a,LENGTH );
}
void Puch(int a)
{ ここが分かりませんでした
}
int Pop()
{ ここがわかりませんでした
}
void Print(char* title,int* a, int n)
{
int ii;
printf("%s", title);
for (ii=0, ii<n; ii++){
printf("%d" , a[ii]);
}
printf("\n");
}

softya

Re:スタックを用いて整数配列の順序を入れ替えるプログラム

#2

投稿記事 by softya » 15年前

えーと、ほぼ同じ問題ですか?
http://www.play21.jp/board/formz.cgi?ac ... &rln=41308
分からないところも同じみたいですので、問題文そのままって事ですかね?

規約としては、
>課題の丸投げ(問題文だけ書く事)は禁止です。
>自分でどこまでやったのか、今どこが解らないのかを明確にして下さい。
>さっぱり解らず、手も足も出ない時は、その事を明記の上、
>勉強方法からアドバイスを受けましょう。
となっていますので、アドバイスをさせていただきます。

1.プッシュは、スタックに積んでいく事。
(1)stackのstack_pの指す場所に値を格納する。
(2)stack_pを加算する。

2.ポップは、スタックから取り出すこと。
(1)stack_pを減算する。
(2)stackのstack_pの指す場所の値を取り出す。

以上です。

ずんだもち

Re:スタックを用いて整数配列の順序を入れ替えるプログラム

#3

投稿記事 by ずんだもち » 15年前

softyaさん、早速のご回答ありがとうございました。

利用規約についてご指摘をありがとうございました。
申し訳ありません、手も足も出ない状態でした。
いただいたアドバイスを参考に、
自分でできるところまで作成し直したいと思います。

閉鎖

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