teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

マークアップに言語指定を追加

2017/05/10 06:48

投稿

haru666
haru666

スコア1593

answer CHANGED
@@ -11,7 +11,7 @@
11
11
  **不具合が起きている理由**
12
12
 
13
13
  ピタゴラスの定理の結果を出力するところのコードをよく見てみよう。
14
- ```
14
+ ```C#
15
15
  for (a = 0; a < sahen.GetLength(0); a++)
16
16
  {
17
17
  for (b = 0; b < sahen.GetLength(1); b++)

3

解説の追加

2017/05/10 06:48

投稿

haru666
haru666

スコア1593

answer CHANGED
@@ -3,4 +3,45 @@
3
3
  cの値更新してないしっていうケアレスミスだね。
4
4
 
5
5
  追記:for 文で c が Lengthと同じ値になったところで止まってるから、uhen[c]はOutOfRangeになるよね
6
- 例外はどこで発生したかちゃんと見ましょう。そうすれば自分で分かるはずです。
6
+ 例外はどこで発生したかちゃんと見ましょう。そうすれば自分で分かるはずです。
7
+
8
+
9
+ 追記2:
10
+
11
+ **不具合が起きている理由**
12
+
13
+ ピタゴラスの定理の結果を出力するところのコードをよく見てみよう。
14
+ ```
15
+ for (a = 0; a < sahen.GetLength(0); a++)
16
+ {
17
+ for (b = 0; b < sahen.GetLength(1); b++)
18
+ {
19
+ sahen[a, b] = ((a * a) + (b * b));
20
+
21
+ if (sahen[a, b] == uhen[c])
22
+ {
23
+ Console.Write("{0} * {0} + {1} * {1} = {2} * {2} ", a, b, c);
24
+ Console.WriteLine();
25
+ Console.Write(sahen[a, b] + " = " + uhen[c]);
26
+ Console.WriteLine();
27
+ Console.WriteLine();
28
+
29
+ }
30
+ }
31
+ }
32
+ ```
33
+
34
+ cは変動しているだろうか。
35
+ cが記述されている箇所を抜き出してみよう。
36
+ `if (sahen[a, b] == uhen[c])`
37
+ `Console.Write("{0} * {0} + {1} * {1} = {2} * {2} ", a, b, c);`
38
+ `Console.Write(sahen[a, b] + " = " + uhen[c]);`
39
+
40
+ この中に、cを変動させているコードはあるかな?
41
+ ないよね。
42
+ つまり、cは変動していない。
43
+
44
+ この時のcが102だから、Index Out Of Range(配列の要素の範囲外にアクセスしている例外)が出ているけど、これを直せば=この証明が上手くいくわけじゃあないよね。
45
+
46
+ 結果を探してくるコードをちゃんと挟まなきゃいけない。
47
+ c を 1 から 100 まで動かして、sahen[a, b]とuhen[c]が一致するかを調べるようにしなきゃダメさ。

2

2017/05/10 06:47

投稿

haru666
haru666

スコア1593

answer CHANGED
File without changes

1

追記

2017/05/10 06:10

投稿

haru666
haru666

スコア1593

answer CHANGED
@@ -1,3 +1,6 @@
1
1
  そりゃー…
2
2
 
3
- cの値更新してないしっていうケアレスミスだね。
3
+ cの値更新してないしっていうケアレスミスだね。
4
+
5
+ 追記:for 文で c が Lengthと同じ値になったところで止まってるから、uhen[c]はOutOfRangeになるよね
6
+ 例外はどこで発生したかちゃんと見ましょう。そうすれば自分で分かるはずです。