C++の質問です
C++の質問です。
c++をコンパイルしたとき、
出力されるのが次のように3つ同時にされるようにしたいのですが、
1、 名前 ○○○○ 番号 ○○○○ x= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}の平均
2、 x= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}の分散 y= {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}の標準偏差
3、 x={1,2,3,4,5,6,7,8,9,10}と y={10,9,8,7,6,5,4,3,2,1}の相関係数
下記のソースをどのように変えればいいでしょうか。
ちなみに、C言語ではなくC++なので
C++形式でお願いします。
どうかお願いします。
#include <iostream>
#include <cmath>
using namespace std;
double Mean(int *a, int size);
double StandardDeviation(int *a, int size);
double CoefficientOfCorrelation(int *a, int *b, int sizeA, int sizeB);
int main()
{
int x[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int y[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
cout << " 標準偏差 : " << StandardDeviation(x, sizeof(x) / sizeof(int)) << endl << " 相関係数 : " << CoefficientOfCorrelation(x, y, sizeof(x) / sizeof(int), sizeof(y) / sizeof(int)) << endl;
return 0;
}
double Mean(int *a, int size)
{
if (size <= 0)
{
return -1.0;
}
double d = 0.0;
for (int i = 0; i < size; i++)
{
d += *(a + i);
}
return d / size;
}
double StandardDeviation(int *a, int size)
{
if (size <= 0)
{
return -1.0;
}
double mean = Mean(a, size);
double d = 0.0;
for (int i = 0; i < size; i++)
{
d += pow(*(a + i) - mean, 2);
}
return sqrt(d / size);
}
double CoefficientOfCorrelation(int *a, int *b, int sizeA, int sizeB)
{
if (sizeA > 0 && sizeB > 0 && sizeA != sizeB)
{
return -1.0;
}
double meanX = Mean(a, sizeA);
double meanY = Mean(b, sizeB);
double sdX = StandardDeviation(a, sizeA);
double sdY = StandardDeviation(b, sizeB);
double coeff = 0.0;
for (int i = 0; i < sizeA; i++)
{
coeff += (*(a + i) - meanX) * (*(b + i) - meanY);
}
return (coeff / (sizeA * sdX * sdY));
}
お礼
ご回答ありがとうございました。 早速会社で実装してみました。 お蔭様で一応実装出来ましたが・・・・新たな問題が。