質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

826閲覧

data[ ]を使ったソートの方法を教えてください。

Red_Bull

総合スコア19

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2021/05/11 13:44

題材

10名分の点数を入力(点数は0以上10以下の整数として、同じ点数はないと仮定します。)
上位3名を合格とし、合格者が何人目かを表示するコードを書きたいです。

発生している問題

ですが、以下のコードだと上位三人の点数が出てしまいます。
どのようにコードを書き換えたら合格者が何人目かを表示するコードになるのか教えていただきたいです。

C

1#include <stdio.h> 2 3int main (void) { 4 int data[10],i,j,num; 5 for (i = 0;i < 10; i++) { 6 printf("点数を入力してください:"); 7 scanf("%d",&data[i]); 8 if ((data[i] < 0)||(data[i] > 10)) { 9 i--; 10 printf("条件を満たしていないのでもう一度"); 11 } 12 } 13 14 printf("合格者:"); 15 for (i = 0;i < 10;i++) { 16 for (j=i+1;j < 10;j++) { 17 if (data[i] < data[j]) { 18 num = data[i]; 19 data[i] = data[j]; 20 data[j] = num; 21 } 22 } 23 } 24 25 for (i=0;i < 3;i++) { 26 printf("%d人目",data[i]); 27 } 28}

terminal

1点数を入力してください:10 2点数を入力してください:9 3点数を入力してください:8 4点数を入力してください:7 5点数を入力してください:6 6点数を入力してください:5 7点数を入力してください:4 8点数を入力してください:3 9点数を入力してください:2 10点数を入力してください:1 11合格者:10人目9人目8人目

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

C

1#include <stdio.h> 2 3int main(void) { 4 int data[10], i, j, num; 5 int rank[10]; 6 for (i = 0; i < 10; i++) { 7 printf("点数を入力してください:"); 8 scanf("%d", &data[i]); 9 rank[i] = i; 10 if ((data[i] < 0) || (data[i] > 10)) { 11 i--; 12 printf("条件を満たしていないのでもう一度"); 13 } 14 } 15 16 printf("合格者:"); 17 for (i = 0; i < 10; i++) { 18 for (j = i + 1; j < 10; j++) { 19 if (data[rank[i]] < data[rank[j]]) { 20 num = rank[i]; 21 rank[i] = rank[j]; 22 rank[j] = num; 23 } 24 } 25 } 26 27 for (i = 0; i < 3; i++) { 28 printf("%d人目 (点数:%d)\n", rank[i], data[rank[i]]); 29 } 30}

投稿2021/05/11 13:52

episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問