DOBON.NET DOBON.NETプログラミング掲示板過去ログ

プログラミング 配列

分類:[.NET]

はじめまして。プログラミングについて初心者なので教えてください。
プログラムはPascal,C,BASIC,FORTRANのいずれかで書くこと。ただし、どの言語を使うにしてもプログラム中に使用する名前の形、属性、意味内容を明示し、用いたアルゴリズムを詳細に説明すること。また、可能な限り実際の実行例をつけることとする。
問 n個の値a[0],a[1],・・・,a[n-1]が与えられているとき、配列a[ ]を大きさの順に並び替えた配列b[ ]を作り出すプログラムを書け。
という問題で以下に答案を書いたところ、間違えとかかれてきました。どこが間違えているのかがわからないので、詳細な御教授お願いできますでしょうか?

#include<stdio.h>
#include<math.h>
#define N 100 //データ数
int main(){
int a[N],i,j,k,gap,t;
for(i=0;i<N;i++) //データ入力(乱数)
a[i]=rand();
for(gap=1;gap<N/3;gap=3*gap+1) //Nより小さい範囲での最大
;             //のgapを決める
  while(gap>0){
   for(i=gap;i<N;i++){
    for(j=i-gap;j>=0;j-=gap){
     if(a[j]>a[j+gap]){
      t=a[j]; a[j]=a[j+gap]; a[j+gap]=t;
}
else
break;
}
}
gap=gap/3; //gapを1/3にする
}
for(i=0;i<N;i++)
printf("%8d",a[i]);
exit(0);
}
■No5582に返信(竹下真一さんの記事)
> はじめまして。プログラミングについて初心者なので教えてください。
> プログラムはPascal,C,BASIC,FORTRANのいずれかで書くこと。ただし、どの言語を使うにしてもプログラム中に使用する名前の形、属性、意味内容を明示し、用いたアルゴリズムを詳細に説明すること。また、可能な限り実際の実行例をつけることとする。
> 問 n個の値a[0],a[1],・・・,a[n-1]が与えられているとき、配列a[ ]を大きさの順に並び替えた配列b[ ]を作り出すプログラムを書け。
> という問題で以下に答案を書いたところ、間違えとかかれてきました。どこが間違えているのかがわからないので、詳細な御教授お願いできますでしょうか?
>
> #include<stdio.h>
> #include<math.h>
> #define N 100 //データ数
> int main(){
> int a[N],i,j,k,gap,t;
> for(i=0;i<N;i++) //データ入力(乱数)
> a[i]=rand();
> for(gap=1;gap<N/3;gap=3*gap+1) //Nより小さい範囲での最大
> ;             //のgapを決める
>   while(gap>0){
>    for(i=gap;i<N;i++){
>     for(j=i-gap;j>=0;j-=gap){
>      if(a[j]>a[j+gap]){
>       t=a[j]; a[j]=a[j+gap]; a[j+gap]=t;
> }
> else
> break;
> }
> }
> gap=gap/3; //gapを1/3にする
> }
> for(i=0;i<N;i++)
> printf("%8d",a[i]);
> exit(0);
> }

.NETと関係く場違いなので、少しだけ答えることにします。
アルゴリズム以前に、配列b[]に並び替えた値をどこで入れているのですか?そもそも、配列bの定義すらしてませんよ。
問題に
>配列a[ ]を大きさの順に並び替えた配列b[ ]を作り出すプログラムを書け。
とありますよ。
アルゴリズムについては、「ソート」、「sort」、「c言語」などをキーワードにしてググったらかなりの情報があるはずです。しかもソースも公開しているサイトもあります。
うは!マルチポストだった…(´・ω・`)ショボーン

ところで、コンパイルして実行結果を調べてみましたか?

なんで、「#include<math.h>」がいるんだ?ぜんぜん使う必要ないじゃん!無駄なincludeはしないように…
ここは質問してもよろしいページではなかったですか?
どうしても解らずに助けをいただきたいと思い来させいただきましたがだめでしょうか?失礼かもしれませんが、お願いできれば幸いです。
2004/08/15(Sun) 19:49:01 編集(投稿者)

■No5587に返信(竹下真一さんの記事)
> ここは質問してもよろしいページではなかったですか?
> どうしても解らずに助けをいただきたいと思い来させいただきましたがだめでしょうか?失礼かもしれませんが、お願いできれば幸いです。

いや、だからマルチポストだって…ちゃんとマナー読んでる?
それは、別として、私の見解や質問に対する回答は?ひどかったらスルー&削除依頼出すからね。
あと、場違いの理由、わからない?分類が「.NET」になってるよね?正しくは「その他」では?
■No5587に返信(竹下真一さんの記事)
> ここは質問してもよろしいページではなかったですか?
> どうしても解らずに助けをいただきたいと思い来させいただきましたがだめでしょうか?失礼かもしれませんが、お願いできれば幸いです。

質問はもちろん構いませんが、マナーを守れない方からの投稿はご遠慮いただいています。このことは掲示板に明記されています。

書き込みのマナーについて
http://dobon.net/vb/bbs/index.html

DOBON.NET | プログラミング道 | プログラミング掲示板