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

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

ただいまの
回答率

87.92%

階乗の星取表でソート

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 171

score 85

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

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

タイム値3以内は近似値比較として手でやりますので星取りは勘定しません、0です
大きい方から星取りの数の階乗の形を保ちたいです

これを以下に示しますが、なんとか正常に動くようにしたいです

import java.util.Scanner;

class J_321{
    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        int N;
        System.out.printf("頭数を入力してください:");
        N = sc.nextInt();

        int[] x = new int[N];
        int[] z = new int[N];
        int y;
        int q;
                int j;
        for(int i = 0; i < N ; i++){
            System.out.printf("タイム値を入力してください:");
            x[i] = sc.nextInt();
        }
        //タイム値入力完了

        for(int i = 0; i < N; i++){
                j = i;
                        while((j > 0) && (x[j-1] > x[j]){
                             int temp;
                             temp = x[j-1];
                             x[j-1] = x[j];
                             x[j] = temp;
                             j--;
            }
        }
        //挿入ソート、x[0]が最大値

        int a = 0;
        int b = 0;
        for(int i = 0; i+1 <= N-1; i++){
            y = x[i];
            q = x[i+1];
            if((y - q >= 0) && (y - q <= 3)){
                a = 0;
            }else{
                a = 1;
            }
            z[i] += a;
        }
        //近似値比較を除く星取りの階乗表を作成、近似値比較は手作業でやるしかない

        for(int i = 0; i < N; i++){
            System.out.printf("%n : %n\n", x[i], z[i]);
        }

    }

}

これでやってみたんですが、数値が表示されません

よろしくお願いします

階乗の出来上がり図
ソートされて、大きな数字が頭にきて
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桁です
上のようになるプログラムを作りたいのです

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2021/06/10 18:31

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • BeatStar

    2021/06/11 10:51

    私の頭が悪いだけかも知れませんが、
    「仕様が曖昧』です。

    私が質問するなら、『星取表のサンプル及び読み方』とかも書きますね。

    趣味でやっているので詳しくはわかりませんが、実務の場合、クライアントと制作サイドは違うので、仕様書は事細かに書くようです。

    キャンセル

  • swordone

    2021/06/13 02:21 編集

    ちゃんと質問内容を読み直してください。最初から最後まで何を言っているのか、全く意味が分かりません。

    > 競馬の競走馬のタイムを数値化して早い方が小さい数字になるようにして

    まではギリギリわかりますが、

    > 多くの星を正の字で数を数えるような感覚で獲得するようにします

    ここから意味が分かりません。「星」とは何のこと?「正の字で数える感覚」と言われても。

    キャンセル

回答 1

0

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[追記1]

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

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

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

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


[追記2]

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

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

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

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

定義を

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 87.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る