アルゴリズム トレースのやり方

解決済

回答 5

投稿

  • 評価
  • クリップ 0
  • VIEW 1,456

kazu-.

score 28

イメージ説明
サイコロのアルゴリズムの問題を解いたのですが、トレースのやり方がわかりません。一番下にトレースっぽく書いたんですがわけわからなくなりました。この場合、どの様に検証すれば良いでしょうか?手書きで確認できるとレースのやり方でお願いします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 5

checkベストアンサー

+3

自分で書いたコードのトレースとかやるの?

...シンプルに考えればいいじゃない。

  1. int count[6] を用意する (count[n-1]はサイコロの目:nが出た回数 n=1~6)
  2. count のナカミを全部0クリアする
  3. 以下を8回繰り返す:
    3.1 int dice に入力値を代入する
    3.2 count[dice-1]を+1 する
  4. countのナカミを出力する

...アドバイスするなら:
変数名にiとかjとか使うのやめな。使うなら必ずその脇に"この変数の意味"を書いておきな。
たとえば上記のように 「count[n-1]はサイコロの目:nが出た回数 n=1~6」みたいな。
理解できないのは、理解できない名前に原因の多くがあると思う。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+2

訓練せずに楽して社会に出るつもりですか?
大きなハンデを背負うことになりますが。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/10/20 22:21

    トレースの概念とかを理解できてないのでどれが訓練に値するのかがわからないです

    キャンセル

  • 2018/10/20 23:09

    トレース:"処理の過程を追いかける" に概念もヘッタクレもなかろうに。

    キャンセル

  • 2018/10/20 23:36

    授業はちゃんと聞きましょう。
    教科書は飛ばさず丁寧に読みましょう。
    予習復習をしましょう。
    宿題は自分でしましょう。

    とりあえずこれだけやってください。

    キャンセル

+2

紙に書かせるとは…時代が逆行して…ゲフンゲフン。
破り捨てる自信が…ゲフン。

検証しろと書かれていないのに、確認されてるのはいいことだと思います。
テストが不要か必要かといわれれば、あったほうがいいわけですから。

とはいえ、紙でテストも検証もしづらいと思います。
上から一行ずつ、変数の取りえる値を確認し齟齬が生まれないかを確認してください。

たとえば、i <= 8 とありますが、iは 0~8 の値を取りますよね?
0, 1, ..., 8 と、合計9回入力することになりそうです。
この点大丈夫でしょうか?

まずは、トレースより、そう言った確認から始めてみては。
あとは、実際に動かしてデバッグするのが普通かと。

デバッグ機能を使えるようになると幸せになれますので、プログラムを組むようになったらすぐに教えてもらってください。デバッグは、横について教えてもらうのが一番いいかと。媚びていきましょう。(先生、デバッグ機能はいの一番に教えるべきですよ…)

デバッグ機能では、一行一行プログラムを実行してゆくことができます。
その際、変数の値も見れますので幸せです。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/10/20 22:23

    初歩的な疑問なのですが、
    I<8 は 0、1、2、3、4、5、6、7ですが
    I<=8になった場合、0、1、2、3、4、5、6、7、8とイコールだと8も含めまれるという事でしょうか?

    キャンセル

  • 2018/10/20 22:45

    はい、その通りです。

    キャンセル

+1

疑似コードのどの時点での値をトレースするかを意識してみてはいかがでしょうか。
その時のiとjの値がどうなっているかも書き出してみては。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

Zuishinさんに同意しますが、工夫してください。

流れを追うだけなのでそこまでの知識は必要ないはずです。(もちろんforとかの知識は必要だけど、科学とかの知識は普通は不要ですよね。)

アルゴリズムの学び方 っていうのもあるみたいです。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

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