DOBON.NETプログラミング掲示板過去ログ
プログラミング 配列
題名: プログラミング 配列
著者: 竹下真一
日時: 2004/08/15 16:21:28
ID: 5582
この記事の返信元:
(なし)
この記事への返信:
[5584]
Re[1]: プログラミング 配列
ぺがらぼ
2004/08/15 17:53:40
[5587]
Re[1]: プログラミング 配列
竹下真一
2004/08/15 19:06:17
ツリーを表示
分類:[.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);
}
題名: Re[1]: プログラミング 配列
著者: ぺがらぼ
URL:
http://pegalabo.net/
日時: 2004/08/15 17:53:40
ID: 5584
この記事の返信元:
[5582]
プログラミング 配列
竹下真一
2004/08/15 16:21:28
この記事への返信:
[5586]
Re[2]: プログラミング 配列
ぺがらぼ
2004/08/15 18:33:30
ツリーを表示
■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言語」などをキーワードにしてググったらかなりの情報があるはずです。しかもソースも公開しているサイトもあります。
題名: Re[2]: プログラミング 配列
著者: ぺがらぼ
URL:
http://pegalabo.net/
日時: 2004/08/15 18:33:30
ID: 5586
この記事の返信元:
[5584]
Re[1]: プログラミング 配列
ぺがらぼ
2004/08/15 17:53:40
この記事への返信:
(なし)
ツリーを表示
うは!マルチポストだった…(´・ω・`)ショボーン
ところで、コンパイルして実行結果を調べてみましたか?
なんで、「#include<math.h>」がいるんだ?ぜんぜん使う必要ないじゃん!無駄なincludeはしないように…
題名: Re[1]: プログラミング 配列
著者: 竹下真一
日時: 2004/08/15 19:06:17
ID: 5587
この記事の返信元:
[5582]
プログラミング 配列
竹下真一
2004/08/15 16:21:28
この記事への返信:
[5589]
Re[2]: プログラミング 配列
ぺがらぼ
2004/08/15 19:15:12
[5590]
Re[2]: プログラミング 配列
管理人
2004/08/16 4:05:08
ツリーを表示
ここは質問してもよろしいページではなかったですか?
どうしても解らずに助けをいただきたいと思い来させいただきましたがだめでしょうか?失礼かもしれませんが、お願いできれば幸いです。
題名: Re[2]: プログラミング 配列
著者: ぺがらぼ
URL:
http://pegalabo.net/
日時: 2004/08/15 19:15:12
ID: 5589
この記事の返信元:
[5587]
Re[1]: プログラミング 配列
竹下真一
2004/08/15 19:06:17
この記事への返信:
(なし)
ツリーを表示
2004/08/15(Sun) 19:49:01 編集(投稿者)
■No5587に返信(竹下真一さんの記事)
> ここは質問してもよろしいページではなかったですか?
> どうしても解らずに助けをいただきたいと思い来させいただきましたがだめでしょうか?失礼かもしれませんが、お願いできれば幸いです。
いや、だからマルチポストだって…ちゃんとマナー読んでる?
それは、別として、私の見解や質問に対する回答は?ひどかったらスルー&削除依頼出すからね。
あと、場違いの理由、わからない?分類が「.NET」になってるよね?正しくは「その他」では?
題名: Re[2]: プログラミング 配列
著者: 管理人
URL:
http://dobon.net
日時: 2004/08/16 4:05:08
ID: 5590
この記事の返信元:
[5587]
Re[1]: プログラミング 配列
竹下真一
2004/08/15 19:06:17
この記事への返信:
(なし)
ツリーを表示
■No5587に返信(竹下真一さんの記事)
> ここは質問してもよろしいページではなかったですか?
> どうしても解らずに助けをいただきたいと思い来させいただきましたがだめでしょうか?失礼かもしれませんが、お願いできれば幸いです。
質問はもちろん構いませんが、マナーを守れない方からの投稿はご遠慮いただいています。このことは掲示板に明記されています。
書き込みのマナーについて
http://dobon.net/vb/bbs/index.html
DOBON.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);
}