「国語、数学、英語の点数を別ファイルから読み取り、そこから合計点を出し、1位、2位、3位を表示するプログラム」をc++
で作りたいのですが、1位から3位までの表示方法がわかりません。ソートした上で1位から3位までを表示させたいのですがイメージとしては  
出席番号 点数  
1位  
2位  
3位  
としたいのですが  
どこを変えればいいのでしょうか  
また、同率だった場合、1位(1人、もう1人)  
2位  
3位  
と表示するにはどうすればいいのでしょうか

```

    #include<stdio.h>
    
    int main()
    {
        FILE *f;
        float exam_result[30], xmax, sum[10], sumdummy;
        int i, j, jmin, n;
    
        f = fopen("ファイル名", "r");
        if(f == NULL){
            printf("ファイル名を開けません"¥n");
            return 1; 
        }
    
        for(i = 0; i < 30; i = i + 3)
            fscanf(f, "%g", exam_result[i]);
    
        fclose(f);
    
        if(n == 0){
            printf("ファイル名にはデータがありません);
            return1;
        }
    
        for(j = 0; j <= 10; j++){
            sum[j] = exam_result[3 * j] + exam_result[3 * j + 1] + exam_result[3 * j + 2];
        }
    
        for(j = 0; j < 10; j = j + 1){
            if(sum[j] < sum[jmin]) jmin = j;
        }
    
        if(j != jmin){
            sumdummy = sum[j];
            sum[j] = sum[jmin];
            sum[jmin] = sumdummy;
        }
    
        for(j = 0; j <= 3; j++){
            printf ("%g", sum[j]);
        }
    
        return 0;
    }
    
```
CC BY-SA 4.0
2019-01-21T06:03:01.243
52164
2019-01-21T09:33:59.097
2019-01-21T06:29:10.310
31857
31857
question
c++
表示方法について質問です
なんかいろいろと動きそうにない部分がいっぱいありますが全部に目をつぶって本文で示されている質問にだけ答えるなら

```

    printf("１位 %g", sum[0]); // でよいのか質問本文から微妙に読み取れない
    printf("２位 %g", sum[1]);
    printf("３位 %g", sum[2]);
    
```

とかでも十分題意を満たすでしょう（ロケール/言語の設定をしておかないと漢字が表示されるかどうか不安が残りますがその辺も置いといて）

表示に `for` を使う縛りがあるなら `printf("%d位 %g", i+1, sum[i]);` とか。  
（前者のコードでは全角、後者のコードでは半角の違いが発生します）

* * *

上記を書いた時点から同率の話が増えていますが、そうなると細かなコードを実装する前にきっちり仕様を定めなければなりません（初学者はこれを怠りがち）プログラムは書いたとおりにしか動かないので、「どう動いてほしいか」きっちり自分の中で整理しておく（これを仕様を定めるという）必要があります。そこがブレブレだと何をしていいのかすらわからなくなってしまいがち。

並べるとは１行に書くでよいのか？  
同率１位が２人いたら次は２位なのか３位なのか？  
全員同率だったら２位は表示するのかしないのか？（同様３位も）  
ぱっと思いつくだけでこのくらい「事前に決めなければならないこと」があります。じっくり考えればもっと出てくるかもしれません。それぞれ、どうなってほしいのか「仕様」を定めましょう。コードを書くのはそれから。
CC BY-SA 4.0
2019-01-21T06:18:30.567
52165
2019-01-21T09:33:59.097
2019-01-21T09:33:59.097
8589
8589
52164
answer