c ++从输入文件中添加coloumn中的数字

时间:2016-04-15 04:08:21

标签: c++

可能是一个非常简单的问题,但我在这里错过了整个循环概念。

我有一个资源文件,其中的数据类似于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;
}

2 个答案:

答案 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[]