回答編集履歴

2 コメント追加

ozwk

ozwk score 8332

2017/02/06 16:47  投稿

アドバイス
---
```C#
public double Corr(ExamResult x) // <- 引数がコード本体のどこにも出てこない = おかしい
{
   if (points.Length <= 2) throw new ArgumentException("points.Length <= 2");
   int sumx, sumy, sumxx, sumxy, sumyy;
   sumx = sumy = sumxx = sumxy = sumyy = 0;
   foreach (int[] d in points)
// <- pointに入っているものは何と定義しましたか? とある**1科目**の点数リストですよね?
// 自分でそう定義しておいて、ここでなぜ2科目入っていると思ったんですか?
   {
       sumx += d[0];
       sumy += d[1];
       sumxx += d[0] * d[0];
       sumxy += d[0] * d[1];
       sumyy += d[1] * d[1];
   }
   var r = Math.Sqrt((points.Length * sumxx - sumx * sumx) * (points.Length * sumyy - sumy * sumy));
   return (points.Length * sumxy - sumx * sumy) / (r != 0 ? r : 1);
}
```
`English.Corr(Japanese)`で全然Japanese使ってませんね。
おかしいですね。
直しましょう。
能書きはいいから答えはよ
---
なるべく元のコードの雰囲気を残すと
```C#
public double Dist(ExamResult x)
{
   if (points.Length <= 2) throw new ArgumentException("points.Length <= 2");
   var ls = points.Zip(x.points,(a,b)=>new[]{a,b});
   
   int sumx, sumy;
   sumx = sumy = 0;
   foreach(int[] d in ls)
   foreach(int[] d in ls)
   {
       sumx += d[0];
       sumy += d[1];
   }
   double devsq =Math.Pow(sumx-sumy,2);
   double devsq =Math.Pow(sumx-sumy,2);//ところでこれがユークリッド距離なのかは疑問
   return Math.Sqrt(devsq);
}
```
1 こーど

ozwk

ozwk score 8332

2017/02/06 16:43  投稿

アドバイス  
---  
```C#
public double Corr(ExamResult x) // <- 引数がコード本体のどこにも出てこない = おかしい
{
   if (points.Length <= 2) throw new ArgumentException("points.Length <= 2");
   int sumx, sumy, sumxx, sumxy, sumyy;
   sumx = sumy = sumxx = sumxy = sumyy = 0;
   foreach (int[] d in points)
// <- pointに入っているものは何と定義しましたか? とある**1科目**の点数リストですよね?
// 自分でそう定義しておいて、ここでなぜ2科目入っていると思ったんですか?
   {
       sumx += d[0];
       sumy += d[1];
       sumxx += d[0] * d[0];
       sumxy += d[0] * d[1];
       sumyy += d[1] * d[1];
   }
   var r = Math.Sqrt((points.Length * sumxx - sumx * sumx) * (points.Length * sumyy - sumy * sumy));
   return (points.Length * sumxy - sumx * sumy) / (r != 0 ? r : 1);
}
```
`English.Corr(Japanese)`で全然Japanese使ってませんね。
おかしいですね。
直しましょう。
直しましょう。
能書きはいいから答えはよ
---
なるべく元のコードの雰囲気を残すと
```C#
public double Dist(ExamResult x)
{
   if (points.Length <= 2) throw new ArgumentException("points.Length <= 2");
   var ls = points.Zip(x.points,(a,b)=>new[]{a,b});
   
   int sumx, sumy;
   sumx = sumy = 0;
   foreach(int[] d in ls)
   {
       sumx += d[0];
       sumy += d[1];
   }
   double devsq =Math.Pow(sumx-sumy,2);
   return Math.Sqrt(devsq);
}
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る