求各路大神帮忙看看这个代码问题出在哪里,为什么运行的时候会什么都没有呢。。。
#include
#include
#include
#include
using namespace std;
int main()
{
int count(0);
const int MAX_SIZE = 20;
int x[MAX_SIZE];
double y[MAX_SIZE],y_est[MAX_SIZE],diff_est[MAX_SIZE],diff_avg[MAX_SIZE],y_avg,sumx(0), sumy(0), sumx2(0),
sumxy(0),sum_diff_est(0), sum_diff_avg(0),denominator, m, b,Rsquare;
string filename;
ifstream data;
cout << "Enter name of input file:";
cin >> filename;
data.open(filename.c_str());
if(data.fail())
{
cerr << "Error opening input file\n";
exit(1);
}
while ( !data.eof() )
{
data >> x[MAX_SIZE] >> y[MAX_SIZE];
for(int k=0;k<MAX_SIZE;k++)
{
sumx += x[k];
sumy += y[k];
sumx2 += x[k]*x[k];
sumxy += x[k]*y[k];
k=count;
}
}
denominator = count*sumx2 - sumx*sumx;
m = (count*sumxy - sumx*sumy)/denominator;
b = (sumx2*sumy - sumx*sumxy)/denominator;
y_avg = sumy/count;
for(int j=0;j<MAX_SIZE;j++)
{
y_est[j] = m*x[j]+b;
diff_est[j] = y_est[j]-y[j];
diff_avg[j] = y[j]-y_avg;
sum_diff_est += diff_est[j]*diff_est[j];
sum_diff_avg += diff_avg[j]*diff_avg[j];
}
Rsquare = sum_diff_est/sum_diff_avg;
cout.setf(ios::fixed);
cout.precision(5);
cout << "Linear model: \n";
cout << "y = " << m << " x + " << b << endl;
cout << "And the value of R square is: " << Rsquare << endl;
system("pause");
data.close();
return 0;
}
该回答引用NewBing,仅供参考,不保证完全正确
你好,这是必应。我可以尝试帮你找出代码的问题。😊
根据我搜索的结果,你的代码可能有以下几个问题:
data >> x[MAX_SIZE] >> y[MAX_SIZE]
,这样会导致数组越界,因为 MAX_SIZE
是数组的最大容量,而不是有效元素的个数。你应该使用 data >> x[count] >> y[count]
,并且在每次读取后,将 count
加一。for(int k=0;k<MAX_SIZE;k++)
,这样会导致计算错误,因为你可能没有读取到 MAX_SIZE
个数据。你应该使用 count
作为循环的终止条件,即 for(int k=0;k<count;k++)
。Rsquare
时,使用了 Rsquare = sum_diff_est/sum_diff_avg
,这样会导致结果为零,因为你使用了整数除法。你应该将其中一个变量转换为浮点数,即 Rsquare = sum_diff_est/(double)sum_diff_avg
。这里有一些有用的资源,可以帮助你更深入地了解 C++ 代码的编写和调试:
希望这些信息能对你有所帮助!如果你还有其他问题,请随时问我。😊
源: 与必应的对话, 2023/6/29
(1) Solve C++ | HackerRank. https://www.hackerrank.com/domains/cpp.
(2) C++ Examples | Programiz. https://www.programiz.com/cpp-programming/examples.
(3) Problems - LeetCode. https://leetcode.com/problemset/.