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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

715閲覧

階乗の星取表でソート

gyro16

総合スコア89

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2021/06/10 07:25

編集2021/06/12 16:14

仕様
競馬の競走馬の
タイムを数値化して早い方が小さい数字になるようにして多くの星を正の字で数を数えるような感覚で獲得するようにします

頭数を入力してタイム値をランダムに格納しますが、ソートし直して、
星取り表を勘定して表示します、速い馬が数が多いです
速い馬は星取りの数が多くなります(正の字の画数が多くなる、正の字で数を数えたりますね、そんな感覚です

タイム値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桁です
上のようになるプログラムを作りたいのです

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

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

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

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

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

K_3578

2021/06/10 07:28

ソースコードはMarkDownのcode機能で囲んでください。
BeatStar

2021/06/10 09:30

まず、質問方法を工夫しましょう。 一つ目。『MarkDownを利用せよ』。 teratailでは、MarkDownが使えます。 投稿時や編集時に、"<code>"または"<コード>"とあるボタンを押して出てくるやつに、コードを書きましょう。 そうしないとインデントが無視されるため、非常に読みづらいです。 二つ目。『「どのようになるべきか」、「どのようになるのか」を書きましょう』。 ソースコードだけ出されても誰もわかりません。 プログラムは書いたとおりにしか動きません。なので『第三者には"何がしたいのか"がわからない』です。 自分が分かっていればいいのでしょうか。 なので、『ちゃんと書きましょう』。 三つ目。『星取表とは何か』。 回答者は質問者と同じ環境にある……わけじゃないです。 一般的なものであればともかく、今回の場合、ざっくりと検索してみると、 相撲関係のものと、ビジネス物がヒットしました。 つまり、『何の話をしているのかわからない』。 なので、『質問方法を工夫しましょう』。
BeatStar

2021/06/11 01:51

私の頭が悪いだけかも知れませんが、 「仕様が曖昧』です。 私が質問するなら、『星取表のサンプル及び読み方』とかも書きますね。 趣味でやっているので詳しくはわかりませんが、実務の場合、クライアントと制作サイドは違うので、仕様書は事細かに書くようです。
swordone

2021/06/13 01:53 編集

ちゃんと質問内容を読み直してください。最初から最後まで何を言っているのか、全く意味が分かりません。 > 競馬の競走馬のタイムを数値化して早い方が小さい数字になるようにして まではギリギリわかりますが、 > 多くの星を正の字で数を数えるような感覚で獲得するようにします ここから意味が分かりません。「星」とは何のこと?「正の字で数える感覚」と言われても。
guest

回答1

0

まともな回答はできません(現時点では仕様が曖昧すぎるため)が。


まず、変数名 等はわかりやすいものにしましょう

自分だけ良ければいいのでしょうか。

自分ひとりで開発していても、一か月後の自分は赤の他人です。

一か月前の自分が組んだコードを完璧に覚えているでしょうか。

ましてやコードレビューしたり、アドバイスしたり、チーム開発したりする場合はなおさらです。

なので x, y, z とかみたいなものは避けましょう。

ただし、「X軸」、「Y軸」の意味とかなら構いません。

可読性があまりにも悪いので回答したくなくなります。

それと、質問にあるコードは挿入ソートじゃない気がします。

というか、ソートしていません。

近似値とやらはわかりません。

ソート済みでの、両隣にある数字の差という意味でしょうか。(なんか、本来の意味とは別の意味で言っていそう)

それと、「入力例」と「出力例」を出しましょう。

自然言語であーだこーだと言うよりも実際のデータを表示した方が早いです。

それと、「System.out.printfメソッドの使い方が違う」。

ざっと調べてみると、フォーマットはC言語と同じっぽいです。(単純に出力するだけなら)

%n ではなく、%d を使ってみてください。

公式リファレンスとかで調べてください。

[追記1]

入力例や出力例はAtcoder等を参考にしてください。

と言うか、『ご自分の質問を第三者的視点で読んでみましょう』。

非常にわかりづらいです。

もうちょっと質問を工夫してください。


[追記2]

それと、用語が間違っている気がしてならないのですが。 

階乗とはなんでしょうか?

普通に考えればWikiにあるような、
5! とかでしょうけど、
質問上ではまったく出てきません。

別の意味で言っている気がしてならないです。

定義もちゃんとしましょう。

投稿2021/06/12 12:16

編集2021/06/12 17:48
BeatStar

総合スコア4958

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問