2

宿題用に作成したプログラムで深刻な出力の問題が発生しています。以下は、フラグ値が-1に達するまで、ユーザーが指定した数値のグループの平均と標準偏差を計算するために使用しているコードです。配列の使用は許可されていません。私は教授から与えられた((sum(xi)^ n)-((sum xi)^ 2 / n)/(n-1))xiisxという式を使用することになっています。 sub i、これは各入力です。私はmacbookproのwin7x64vmでVisualStudio2010を使用しています(念のために言っておきますが、これには何の関係もありません)。

以下はコードです(エラーのスクリーンキャップが続きます)

#include<iostream>
#include <cmath>
using namespace std;


int i;

int sum_unkown_vars();
double std_dev(int sum, int n);

/*double std_dev(int sum, int n)
{
double dev;

dev = sqrt(((pow(sum, 2.0)-(pow(sum, 2.0)/n)))/(n-1));

return dev;
}*/

int sum_unkown_vars()
{
i = 0;
int n;
int sum1 = 0;
int sum_sqd = 0;
double sdev;

cout<<"This part will sum variables given by user until flag value of -1"<<endl;

cout<<"\nNext Variable Please: ";
cin >> n;
while(n != -1)
{

    sum_sqd = sum_sqd + n*n;
    sum1 = sum1 + n;
    i++;
    cout<<"\nNext Variable Please: ";
    cin >> n;
}

cout <<"\nNumber of variables is "<< i <<endl
    <<"Sum of variables is "<< sum1 <<endl;

sdev = sqrt(((sum_sqd*1.0)-(1.0*pow(sum1, 2.0)/n))/(n*1.0-1.0));

cout <<"\nStandard Deviation is "<< sdev << endl;

return sum1;
}



int main()
{
int sum = 0;
int j;
double avg;
double std_dev1;

cout<<"This program will take integers given by the user,"
    <<"\nsum them, then find average and standard deviation\n\n";

sum = sum_unkown_vars();

//cout <<"\nPlease enter number of integers previously given: ";
//cin >> j;

avg = sum / (i*1.0);

cout <<"\nAverage is: "<<avg<<endl;

//std_dev1 = std_dev(sum, i);

//cout <<"Standard Deviation is : "<< std_dev1 <<endl;



system("pause");
return 0;

}

画面キャプチャ

助けてくれてありがとう

4

1 に答える 1

1

式の変数n

((sum (xi)^n) - ((sum xi) ^2/ n) /(n-1))

そして、関数の変数'n'

sum_unkown_vars()

同じではありません。式のnは要素の数を示し、これはプログラムの変数「i」によって定義されます。最初にこれを修正してください。

さらに、変数の数はi + 1にするか、最初の読み取りの直後にiをインクリメントする必要があります。

コードにはまだまだエラーがあると思います。たとえば、関数から標準偏差を返さない、標準偏差を返すために整数を使用しているなど。残りはデバッガーで自分でデバッグしてください。値を期待して、デバッガーでクロスチェックしてください。

于 2012-07-17T18:13:44.927 に答える