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

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

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

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

Q&A

解決済

C#について教えてください。

starsecond
starsecond

総合スコア13

C#

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

2回答

0グッド

0クリップ

743閲覧

投稿2022/11/16 07:09

前提

C#の勉強の中で、以下サイトで練習問題を問いています。
https://csharp.sevendays-study.com/problem4.html#problem5

Prob5-13の問題
3×3の二次元配列を作成し、それぞれに0から9の乱数を発生させ、実行例のように、その内容と、数値の最大値・最小値を表示させなさい。

エラーはなく、結果も表示されるのですが、最小値の方がたまに間違った値になってしまいます。
結果画像:イメージ説明
(この画像の場合最小値は0になってほしい)
どこが間違っているかご指摘いただけますと幸いです。

実現したいこと

正確な結果表示

発生している問題・エラーメッセージ

エラーメッセージ なし

該当のソースコード

ソースコード namespace ConsoleApp1 { class Program { static void Main(string[] args) { int[,] data = new int[3, 3]; Random rnd = new Random(); int m, n; int max = 0; int min = 0; for(m = 0; m < 3; m++) { for(n = 0; n < 3; n++) { data[m, n] = rnd.Next(0, 10); if (data[m, n] > max || max == 0) { max = data[m, n]; } if (data[m, n] < min || min == 0) { min = data[m, n]; } Console.Write(data[m, n] + " "); } Console.WriteLine(); } Console.WriteLine(); Console.WriteLine("最大値:{0}", max); Console.WriteLine("最小値:{0}", min); } } }

試したこと

if文の最小値の代入のところで条件を0以下と0未満で試してみましたが結果は変わりませんでした。

補足情報(FW/ツールのバージョンなど)

VisualStudio2019

以下のような質問にはグッドを送りましょう

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

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

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

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

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

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

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

適切な質問に修正を依頼しましょう。

回答2

4

ベストアンサー

Text

1|| max == 0 2|| min == 0 3がバグの原因である。

投稿2022/11/16 07:15

atcoderyellow

総合スコア481

spoofy_dragon, YT0014, Hevendor👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

2022/11/16 09:04

こちらの回答が複数のユーザーから「質問に対する回答となっていない投稿」という指摘を受けました。

回答へのコメント

atcoderyellow

2022/11/16 07:16

maxは-1, minは10で初期化する。
starsecond

2022/11/16 07:24

ありがとうございます! ご指摘通り初期値を変更し、if文の値を初期値に合わせたら50回ほど試してすべて正確に表示されました!

1

if (data[m, n] < min || min == 0)

min に0が入ったら問答無用でdata[m, n] の値が代入されてしまいますね

投稿2022/11/16 07:23

y_waiwai

総合スコア86072

YT0014👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

2022/11/16 08:05

こちらの回答が他のユーザーから「質問に対する回答となっていない投稿」という指摘を受けました。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

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

C#

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