- ベストアンサー
小さい順に並べ替えるプログラム
コンピュータに10個のてきとうな数字を入力させ それを、小さい順に並べ替えるプログラムです。 以下のようにしたのですが、エラー0 警告0 なのに動きません。 どこが違うのでしょうか? #include<iostream> #include<cstdlib> #include<ctime> using namespace std; const int NUM_ELEMENTS=10; void sort(int*); void generation(int*); void exchange(int&,int&); void sort(int* a){ int min, locate, i, j; for(i=0; i<NUM_ELEMENTS-1; i++){ min = a[i]; locate = i; for(j=i; j<NUM_ELEMENTS; j++){ if(min > a[j]){ min = a[j]; locate = j; } } exchange(a[i],a[locate]); } } void generation(int* a){ int i; srand(time(NULL)); for(i=0; i<NUM_ELEMENTS; i++){ a[i] = rand(); } } void exchange(int& a,int& b){ int t; t=a; a=b; b=t; } int main(){ int data[NUM_ELEMENTS]; generation(data); sort(data); return 0; }
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
動いていますが、結果を画面に表示させる部分が無いため 画面上には何も出ません。 やりたいことを全て書かないとコンピュータは 何もしてくれません(^^; 例えば,sort(data);の次あたりに int i; for ( i=0 ; i<NUM_ELEMENTS ; i++ ) printf("data[%d] = %d\n",i,data[i]); のような物が必要です。
その他の回答 (3)
- ranx
- ベストアンサー率24% (357/1463)
> プログラムの実行をすると、背景が黒い画面になりますよね? > そこに、Press any key to continue > と表示されます。 これは恐らく正常に動作している状態だと思います。 chi-nao_chanさんのプログラムは、要約すると、 1.何も入力を受付けず 2.いくつかの数値を自動生成して 3.その数値をソートし、 4.何も出力(表示)せずに 5.終了する プログラムなのです。 これでは、画面を眺めても何をしているか分かりません。 出力についてはterra5さんの回答で良いと思います。 入力については(自動生成で良いのならば修正の必要はありませんが、 質問は「入力」となっているので)いくつかのやり方がありますが、例えば for(i=0; i<NUM_ELEMENTS; i++){ scanf("%d",&data[i]); } のようにすればできます。
お礼
はい・・・。 ありがとうございました。 いろんな文字や記号が出てきて・・・ 爆発寸前です(笑)
- amuro_78
- ベストアンサー率20% (9/43)
回答します、出入力関数ってもしかすると、 いやもしかしなくて、 #include<stdio.h> のことだと思います。 これがなければ出入力ができません。 これは一番上にかけばいいです。
お礼
ありがとうございました。 amuro_78さんが回答してくださったように一番上に #include<stdio.h>をかいたのですが、 結果は変わりませんでした。 ほかに何か必要なものとかありますか?
- ranx
- ベストアンサー率24% (357/1463)
動かないとはどういう状態でしょう。 見たところ、入出力に関する関数が見当たりませんが。
お礼
プログラムの実行をすると、背景が黒い画面になりますよね? そこに、Press any key to continue と表示されます。 入出力に関する関数とはどこにかくのですか?
お礼
現在、どの構文が何をしてくれるのか 混乱中です・・・。 なんで、そうなるの?? ということだらけで・・・。 がんばって勉強します。 ありがとうございました。