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個くらいであれば、コピペしてすぐ出来ます。まあ、ものによりけりですが、変にループが多くない分早く書けると思います。もう一回ループさせれば配列でソートになりますし、比較関数を使う方法もあります。その時の余裕に合わせてどうぞ。