ページ 11

Cで数列を並び変えたいのですが

Posted: 2009年12月23日(水) 20:06
by ,プログラム初心者
タイトルの通りCで数列の並び替えをしたいのですが、プログラムを実行すると表示が

0000001100100001

と表示され、入れ替えの場所も1の数も合致しません。
修正する必要があると思うのですが、どうしても自分では間違いが見つかりません。助けてください!


#include <stdio.h>

int main(void)
{
int a[16] = {0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0};
int order[16] = {0,2,3,1,12,5,9,8,10,11,7,15,4,14,13,6};

int i;

for(i=0;i<16;i++)
{
int x = order;
int y = a[x];
a = y;
printf("%d",a);
}
return 0;
}

よろしくお願いします。

Re:Cで数列を並び変えたいのですが

Posted: 2009年12月23日(水) 20:14
by box
入れ替え後の結果は、どうなるのが正しいのですか?
0と1だけからなる入力データだと、正しい結果を得ているかどうかが
わかりづらそうです。
入力データをすべて異なる数値にして、ロジックを考え直してみては
いかがでしょうか。

Re:Cで数列を並び変えたいのですが

Posted: 2009年12月23日(水) 20:22
by プログラム初心者
お早い回答ありがとうございます。
わかりました。入力データを変更して考え直して見ます。

Re:Cで数列を並び変えたいのですが

Posted: 2009年12月23日(水) 20:29
by sizuma
あと、5つぐらいでまずは考えてみるのはどうでしょうか?

まずは規約をよんでください。
http://dixq.net/board/board.html

僕にはどういう順で並べ替えたいのか分からないです。
とりあえずorderの要素の数順に表示したいだけだったら

printf("%d",a[order])

で十分なんじゃないかな?と思います。
何も書いてないけど、コードから察するに配列の中身も入れ替えたいんだろうけど。

Re:Cで数列を並び変えたいのですが

Posted: 2009年12月23日(水) 20:59
by プログラム初心者
すいません。規約を読むのを怠っていました。
お二方の意見を参考に自分なりに考え直してみます。機会があればまた質問させていただきます。
ありがとうございます。