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

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

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

2051閲覧

乱数で10の倍数が出たらループを終了させる場合

shinyakita

総合スコア39

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2017/11/25 01:42

【設題】
whileの無限ループを作り、その中で、1から100までの乱数を発生させ、表示しなさい。その際、値が10の倍数であれば、ループを抜け、”終了します”と表示して、プログラムを終了しなさい。

この課題に対し下記のコードを書きました。
動作はしております。

using System; namespace ConsoleApp2 { class Program { static void Main(string[] args) { Random random = new Random(); Console.WriteLine("10の倍数が出たら終了"); int i = 1; while (i%10!=0) //除算した余りが0でなければループさせる。 { i = random.Next(1, 101); Console.WriteLine(i); } Console.WriteLine("終了します"); } } }

このサイトの「無限ループの章」では乱数を使い6が出たら終了させるという説明用のコードは下記の通りでした。
上記の設題に対しては下記のサンプルコードのように書くの正解で上記の私が書いたコードは不正解になるのでしょうか?
while(true)としてif文とbreakを使うのは各構文の使用サンプルを示したものなのか、このように書かないと不都合が出るのか?
わからなく質問させて頂きました。
ご教授の程よろしくお願い致します。

namespace Sample406 { class Program { static void Main(string[] args) { // 乱数の初期設定 Random rnd = new Random(); Console.WriteLine("6が出たら終了"); // 無限ループ while(true){ int dice = rnd.Next(1, 7); // 1以上7未満の乱数を発生させる(1から6まで) Console.WriteLine(dice); if(dice == 6){ break; // ループから抜ける } } Console.WriteLine("終了"); } } }

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

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

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

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

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

guest

回答2

0

ベストアンサー

shinyakitaさんがかかれたコードは、
whileの無限ループを作り
の部分を満たしてませんね。
結果としては同じですけど、過程を課題としている場合には減点対象となる可能性が高いです。

投稿2017/11/25 02:02

hihijiji

総合スコア4150

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

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

shinyakita

2017/11/25 02:26

そもそも「while」による無限ループを満たしていないのですね。 つまり設問に従っていない為減点という事ですね。 2*4の答えを求めなさいという設問に対して2+2+2+2で答えを出したようものでしょうか? 奥が深いというよりも深すぎます。
guest

0

私が書いたコードは不正解になるのでしょうか?

その辺はそのサイトの人に聞いてみるしかないんじゃないかなあ。
たぶん設問を素直に実装すると下のコードになると思うし、
機能的に同じっぽいなら正解とするか否かでしょうねえ。

ちなみに、ループを抜ける際になにか処理を追加したい場合、
上のコードだと苦心することになりそうだと思いましたが、
結局は自分がokとするかどうかってことじゃないのかなあ。

投稿2017/11/25 02:13

takasima20

総合スコア7458

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

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

shinyakita

2017/11/25 02:21

ありがとうございます。 結果的に同じでもループ後の処理があると私のコードでは苦心することになるのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問