1~10000までの範囲の整数が10個入力される。大きい順に3つ出力しなさい。ただし、同じ大きさが複数ある可能性有り。
注:原文では整数は山の高さです。
整数1
整数2
・
・
整数9
整数10
1番大きい数(整数)
2番大きい数(整数)
3番大きい数(整数)
2514
5648
5613
8612
456
7456
1231
3489
2313
4886
8612
7456
5648
いくつかありますが、今回は挿入法(?)で行きましょう。ドミノ倒しみたいに大きい数を残していきます。
#include <stdio.h> //配列や、ソートなんて使いません。 int main(){ int a,b,c,in,i; a=b=c=0; for(i=0;i<10;i++){ scanf("%d",&in); if(in>a){ int t=a; a=in; in =t; } if(in>b){ int t=b; b=in; in =t; } if(in>c){ int t=c; c=in; in =t; } } printf("%d\n%d\n%d\n",a,b,c); return 0; }
//ソート関数使用版 #include <stdio.h> #include <stdlib.h> //比較関数 int comp(const void * a,const void * b){ return (*(int *)b - *(int *)a); } int main(){ int input[10]; int i; for(i=0;i<10;i++){ scanf("%d",&(input[i])); } //並び替え qsort(input,10,sizeof(int),comp); for(i=0;i<3;i++){ printf("%d\n",input[i]); } return 0; }
import java.io.*;
class a03{
public static void main(String args[])throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int input[] = new int[10];
for(int i=0;i<10;i++){
input[i] = Integer.parseInt(br.readLine());
}
java.util.Arrays.sort(input);
for(int i=9;i>=7;i--){
System.out.println(input[i]);
}
}
}
Imports System
Module m
Sub Main()
Dim input(9) As Integer
Dim i As Integer
For i = 0 To 9
input(i) = Convert.ToInt32(Console.ReadLine())
Next
Array.Sort(input)
For i = 9 To 7 Step -1
Console.WriteLine(input(i))
Next
End Sub
End Module
3個くらいであれば、コピペしてすぐ出来ます。まあ、ものによりけりですが、変にループが多くない分早く書けると思います。もう一回ループさせれば配列でソートになりますし、比較関数を使う方法もあります。その時の余裕に合わせてどうぞ。