• ベストアンサー

小さい順に並べ替えるプログラム

コンピュータに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; }

質問者が選んだベストアンサー

  • ベストアンサー
  • terra5
  • ベストアンサー率34% (574/1662)
回答No.3

動いていますが、結果を画面に表示させる部分が無いため 画面上には何も出ません。 やりたいことを全て書かないとコンピュータは 何もしてくれません(^^; 例えば,sort(data);の次あたりに int i; for ( i=0 ; i<NUM_ELEMENTS ; i++ ) printf("data[%d] = %d\n",i,data[i]); のような物が必要です。

chi-nao_chan
質問者

お礼

現在、どの構文が何をしてくれるのか 混乱中です・・・。 なんで、そうなるの?? ということだらけで・・・。 がんばって勉強します。 ありがとうございました。

その他の回答 (3)

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.4

> プログラムの実行をすると、背景が黒い画面になりますよね? > そこに、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]);  } のようにすればできます。

chi-nao_chan
質問者

お礼

はい・・・。 ありがとうございました。 いろんな文字や記号が出てきて・・・ 爆発寸前です(笑)

  • amuro_78
  • ベストアンサー率20% (9/43)
回答No.2

回答します、出入力関数ってもしかすると、 いやもしかしなくて、 #include<stdio.h> のことだと思います。 これがなければ出入力ができません。 これは一番上にかけばいいです。

chi-nao_chan
質問者

お礼

ありがとうございました。 amuro_78さんが回答してくださったように一番上に #include<stdio.h>をかいたのですが、 結果は変わりませんでした。 ほかに何か必要なものとかありますか?

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

動かないとはどういう状態でしょう。 見たところ、入出力に関する関数が見当たりませんが。

chi-nao_chan
質問者

お礼

プログラムの実行をすると、背景が黒い画面になりますよね? そこに、Press any key to continue と表示されます。 入出力に関する関数とはどこにかくのですか?

関連するQ&A

専門家に質問してみよう