仕様
競馬の競走馬の
タイムを数値化して早い方が小さい数字になるようにして多くの星を正の字で数を数えるような感覚で獲得するようにします
頭数を入力してタイム値をランダムに格納しますが、ソートし直して、
星取り表を勘定して表示します、速い馬が数が多いです
速い馬は星取りの数が多くなります(正の字の画数が多くなる、正の字で数を数えたりますね、そんな感覚です
タイム値3以内は近似値比較として手でやりますので星取りは勘定しません、0です
大きい方から星取りの数の階乗の形を保ちたいです
これを以下に示しますが、なんとか正常に動くようにしたいです
Java
1import java.util.Scanner; 2 3class J_321{ 4 public static void main(String[] args){ 5 6 Scanner sc = new Scanner(System.in); 7 int N; 8 System.out.printf("頭数を入力してください:"); 9 N = sc.nextInt(); 10 11 int[] x = new int[N]; 12 int[] z = new int[N]; 13 int y; 14 int q; 15 int j; 16 for(int i = 0; i < N ; i++){ 17 System.out.printf("タイム値を入力してください:"); 18 x[i] = sc.nextInt(); 19 } 20 //タイム値入力完了 21 22 for(int i = 0; i < N; i++){ 23 j = i; 24 while((j > 0) && (x[j-1] > x[j]){ 25 int temp; 26 temp = x[j-1]; 27 x[j-1] = x[j]; 28 x[j] = temp; 29 j--; 30 } 31 } 32 //挿入ソート、x[0]が最大値 33 34 int a = 0; 35 int b = 0; 36 for(int i = 0; i+1 <= N-1; i++){ 37 y = x[i]; 38 q = x[i+1]; 39 if((y - q >= 0) && (y - q <= 3)){ 40 a = 0; 41 }else{ 42 a = 1; 43 } 44 z[i] += a; 45 } 46 //近似値比較を除く星取りの階乗表を作成、近似値比較は手作業でやるしかない 47 48 for(int i = 0; i < N; i++){ 49 System.out.printf("%n : %n\n", x[i], z[i]); 50 } 51 52 } 53 54}
これでやってみたんですが、数値が表示されません
よろしくお願いします
階乗の出来上がり図
ソートされて、大きな数字が頭にきて
zの配列の中身が階乗のような状況になる
3ポイント内は近似値比較を手作業でやりますのでプラス0で計算します
4頭の例
16 0
15 0
11 1
11 1
4頭の例
13 0
12 0
11 0
11 0
4頭の例
16 0
10 1
9 1
5 2
4頭の例
16 0
15 0
12 1
11 1
ここで単純にタイム値を20以下の数字にしていますが、実際に使う場面は4桁です
上のようになるプログラムを作りたいのです