

タイトルの通り、入力した10個の数値と昇順にソートした後の数値を出力するプログラムを作成したいのですが、コンパイルはできるものの、その実行結果が期待している実行結果と少し違います。

私は以下のようにプログラムをしました。

[code]

    #include <stdio.h>
    #define NUMBER 10
    
    void swap(int *px,int *py)
    {
        int temp=*px;
        *px=*py;
        *py=temp;
    }
    
    void readIntArray(int a[], int size)
    {
        int i;
        for(i=0;i<size;i=i+1) {
            printf("%d 番目? ", i+1);
            scanf("%d", &a[i]);
        }
    }
    
    void printIntArray(int a[], int size)
    {
        int i;
        for(i=0;i<size;i=i+1) {
            printf("%d ", a[i]);
        }
        printf("\n");
    }
    
    void bsort(int a[],int n)
    {
        int i,j;
        for(i=0;i<n-1;i++)
            for(j=n-1;j>i;j--)
                if(a[j-1]>a[j])
                    swap(&a[j],&a[j-1]);
    }
    
    int main(void)
    {
        int i;
        int data[i],point[NUMBER];
        printf("%d個のデータを入力してください。\n",NUMBER);
        for(i=0;i<NUMBER;i++){
            printf("%d番：",i+1);
            scanf("%d",&point[i]);
        } 
        bsort(point,NUMBER);
        readIntArray(data,NUMBER);
        printIntArray(data,NUMBER);
       
        puts("昇順にソートしました。");
        for(i=0;i<NUMBER;i++)
            printf("%d番:%d\n",i+1,point[i]);
    
        return 0;
    }
    
[/code]

**実行結果**

[code]

    $ ./a.out
    10個のデータを入力してください。
    1番：10
    2番：9
    3番：8
    4番：7
    5番：6
    6番：5
    7番：4
    8番：3
    9番：2
    10番：1
    1 番目? 10
    2 番目? 9
    3 番目? 8
    4 番目? 7
    5 番目? 6
    6 番目? 5
    7 番目? 4
    8 番目? 3
    9 番目? 2
    10 番目? 1
    10 9 8 7 6 5 4 3 2 1 
    昇順にソートしました。
    1番:1
    2番:2
    3番:3
    4番:4
    5番:5
    6番:6
    7番:7
    8番:8
    9番:9
    10番:10
    
[/code]

**期待している実行結果**

[code]

    $ ./a.out
    10個のデータを入力してください。
    1 番目? 10
    2 番目? 9
    3 番目? 8
    4 番目? 7
    5 番目? 6
    6 番目? 5
    7 番目? 4
    8 番目? 3
    9 番目? 2
    10 番目? 1
    10 9 8 7 6 5 4 3 2 1 
    昇順にソートしました。
    1番:1
    2番:2
    3番:3
    4番:4
    5番:5
    6番:6
    7番:7
    8番:8
    9番:9
    10番:10
    
[/code]

同じことを二回も聞かれるようなプログラムしか作れなかったので、色々他のプログラムをしてみたのですが、昇順の結果が変になったり、昇順処理前のデータがきちんと出てこなかったりして、どのようにプログラムをすれば正しく期待しているコンパイル結果が出力されるのかがわかりません。  
どうすればいいのでしょうか。回答よろしくお願いします。


CC BY-SA 4.0
2020-10-04T16:43:52.003
70907
2020-10-05T00:08:08.217
2020-10-04T22:55:20.870
9515
41837
question
c
10個の数字を入力すると、入力した数字と昇順にソートした後の数値を出力するプログラムを作成したのですが、少しおかしくなってしまいます。


ヒント：`readIntArray()` ってユーザーに入力を求める関数ですよね。  
答え：それを `bsort()` の後に呼んだらどうなりますか？

明日のための第一歩：たいていの開発環境にはデバッガというものがついています。 Visual Studio ならば組み込み機能として
[cygwin](/questions/tagged/cygwin "'cygwin' のタグが付いた質問を表示") なら `gdb`
とか。デバッガが使えるようになるとプログラムがどのように挙動するかをいちいち手で追いかけることができデバッグ効率が上がります。ぜひ覚えてみてください。掲示板系サイトに質問して答えが返ってくるのを待っている間に原因がわかりますよ。


CC BY-SA 4.0
2020-10-05T00:08:08.217
70911
2020-10-05T00:08:08.217
8589
70907
answer