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

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

新規登録して質問してみよう
ただいま回答率
85.48%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

解決済

2回答

245閲覧

指摘されたループの条件がわからない。(<なのか>がわからない)

kazu-.

総合スコア34

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

0グッド

0クリップ

投稿2019/01/12 04:37

編集2019/01/12 04:51

問題
整数mとnに出力範囲を入力し、要素数20の整数型配列(データは格納済み)の[m][n]の要素を順に出力する。mがnより大きい場合は、[n][m]の要素を順に出力する mまたはnが負数なら[0]から、20以上なら[19]までを出力する ただし、mとnの両方が負数になったり(例: m=−5、n=ー2)、mとnの両方が20以上になったり(例:m=100、n=200)することはない

mとnの両方が負数になったり(例: m=−5、n=ー2)、mとnの両方が20以上になったり(例:m=100、n=200)することはない のループに入る条件で頭が混乱しています。    

mとnの両方が20以上の条件は出来てるのですが、mとnの両方が負数になったりという条件えループが間違ってる理由がわかりません。

イメージ説明

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

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

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

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

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

otn

2019/01/12 05:04 編集

問題に対してどうしたのかを書いてください。 画像は全く読めないので削除しましょう。
guest

回答2

0

ベストアンサー

こんにちは。

根本的な部分で勘違いしているっぽいです。

少しリアルな場面を想定してみると良いかも知れません。
0~19の番号が振ってある20個の四角がかかれた紙があり、それぞれの四角の中には何か数字が書かれているとします。

0 1 2 3 ... 19 | 23|589| 45|896|...|982|

その内の2つの四角を指定して、その2つの間にかかれている数字を順に読み上げなさいという問題と同等です。
2つの指定方法として0~19の番号をmとnで指定するわけです。例えばm=1とn=3なら、589, 45, 896等です。
mとnの順序はどちらでもよくm=3とn=1というような指定もありです。また、お馬鹿な人もいるので、mやnに範囲外(0~19以外)の値を指定されるケースは想定する必要があります。
その際どのように解釈するべきか書かれています。

でも、そようなのお馬鹿さんといえども、0~19にかすりもしないような指定はしない(両方負、両方20以上)ので、そのケースではどのような動作をしても良い(気にしなくて良い)ということですよ。

この問題を処理するためのアルゴリズムを、授業で習っている言語(私は見たことないですが、何かそれなりの言語なのだと思います)で記述せよということです。なので、その言語では定義されていない記述をするとダメなわけです。(日本語でかけと言われている時に、一部を英語で書くとダメという意味と同じです。)

投稿2019/01/12 06:03

Chironian

総合スコア23272

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

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

0

mとnの両方が負数になったり(例: m=−5、n=ー2)、mとnの両方が20以上になったり(例:m=100、n=200)することはない

そういったケースは想定しなくて良い、と書いてあるのだと思いますけど。

投稿2019/01/12 05:04

hayataka2049

総合スコア30933

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

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

kazu-.

2019/01/12 05:15

mまたはnが負数の場合です 私は、n<0 AND m<0と考えました。
hayataka2049

2019/01/12 05:22

>mまたはnが負数の場合です >私は、n<0 AND m<0と考えました。 二行目が一行目につながっているとすれば、n<0 OR m<0ですね。またはなのになぜANDにしたのか。
kazu-.

2019/01/12 05:24

またはがANDと勘違いしてました。
hayataka2049

2019/01/12 05:27

その条件式を書いてどうしたいのでしょうか。
kazu-.

2019/01/12 05:34

どちらかが負数だった場合に、0番目から出力したいです。
hayataka2049

2019/01/12 05:51

いま私の頭の中に浮かんでいる疑問点。すべてではありません。コメントのやり取りに基づいて生じた主だったものだけ ・「どちらかが負数だった場合に」ということはそれ以外のケースを想定した分岐も必要になるはずだが、擬似コード上には見当たらない ・0番目から出力したいらしいのに、入力されたままのmでarray[m]を出力しようとしている ・ループの条件式でi<=timesを書いているのに、ループ内でiもtimesも更新されていない。
hayataka2049

2019/01/12 05:56 編集

話が逸れましたが、改めて書くと >mとnの両方が負数になったり(例: m=−5、n=ー2)、mとnの両方が20以上になったり(例:m=100、n=200)することはない は入力値の要件です。これを条件式としてプログラムに反映するという性質の記述ではありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問