可能是一个非常简单的问题,但我在这里错过了整个循环概念。
我有一个资源文件,其中的数据类似于input.txt
。第一个是带字符串类型的id列,但是rest列是double。
1111 10 20 30
2222 11 22 33
3333 22 23 24
4444 33 33 34
现在,我必须写一个c ++程序,我必须cout第1,第2和第3列的平均值 我确实编写了程序并在测试中得分,但我知道我们可以在这里使用循环并轻松完成。救命。这是我的工作计划。
double q1, q2, q3, ave1, ave2, ave3;
double sum = 0;
double sum2 =0;
double sum3 =0;
while(fin >> id ){
fin >> q1 >> q2 >> q3;
sum = sum+ q1;
q1++;
ave1 = sum /4;
sum2 = sum2 + q2;
q2++;
ave2 = sum2/4;
sum3 = sum3 + q3;
q3++;
ave3 = sum2/4;
}
cout << "The average of q1 " << ave1<< endl;
cout << "The average of q2 " << ave2<< endl;
cout << "The average of q3 " << ave3<< endl;
fin.close();
return 0;
}
答案 0 :(得分:0)
假设您在id var和q1中读取了Id,q2,q3是双值意味着,
int count =0;
while(fin >> id){
count ++;
fin >> q1 >> q2 >>q3 ;
sum += q1;
sum2 += q2;
sum3 += q3;
}
cout << "Average q1 " << sum/count; //if you want double result use count as double
cout << "Average q2" << sum2/count;
cout << "Average q2" << sum3/count;
告诉我们更多信息..
对于每个循环,它与简单
相同int count =0;
while(fin >> id){
count ++;
fin >> q1 >> q2 >>q3 ;
sum += q1;
sum2 += q2;
sum3 += q3;
cout << "Average q1 " << sum/count; //if you want double result use count as double
cout << "Average q2" << sum2/count;
cout << "Average q2" << sum3/count;
}
谢谢,
答案 1 :(得分:0)
对于教育价值,会提到您可以使用数组和循环来帮助您的程序扩展到更多列而无需编写更多代码......
const int num_columns = 3;
size_t lines = 0;
double sum[num_columns] = { 0 };
while(fin >> id ){
{
++lines;
for (int col = 0; col < num_columns; ++col)
{
int num;
assert(fin >> num);
sum[col] += num;
}
}
double ave[num_columns];
for (int col = 0; col < num_columns; ++col)
ave[col] = sum[col] / lines;
for (int col = 0; col < num_columns; ++col)
std::cout << "The average of q" << col + 1 << " is " << ave[col] << '\n';
// ABOVE, you could have one loop print sum[col]/lines directly, without ave[]