2016-04-15 22 views
0

Wahrscheinlich eine sehr einfache Frage, aber ich vermisse das ganze Loop-Konzept hier.C++ Hinzufügen einer Zahl in einer Spalte aus einer Eingabedatei

Ich habe eine Ressourcendatei mit Daten wie diese input.txt genannt. Zuerst ist die ID-Spalte mit dem String-Typ, aber Rest-Spalte sind doppelt.

1111 10 20 30 
2222 11 22 33 
3333 22 23 24 
4444 33 33 34 

Nun, ich habe ein C++ Programm zu schreiben, wo ich haben durchschnittlich 1., 2. und 3. Spalte cout.
Ich habe das Programm geschrieben und punkten in einem Test, aber ich weiß, wir können hier Schleife verwenden und es einfach machen. Hilfe. Hier ist mein Arbeitsprogramm.

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

Bitte posten Sie Ihre voll funktionsfähige Code zu schreiben, einschließlich der Eingangs und Ausgabe, unter http://codereview.stackexchange.com/. –

+0

Was ist die Frage? – fjardon

Antwort

0

Angenommen Sie haben die Id in id var und q1 lesen, q2, q3 sind Doppel Werte bedeutet,

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; 

uns für weitere Informationen wissen lassen ..

Für jede Schleife wird gleiche wie einfache

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; 
} 

Danke,

+0

das funktioniert, aber ich suchte nach der Lösung mit der Schleife. Danke – user3071451

+0

@ user3071451: Wenn Sie den Durchschnitt für jede Zeile möchten, dann beenden Sie die While-Schleife nach dem letzten cout .. Das heißt, wir berechnen den Durchschnitt für jede Zeile der Eingabe. –

0

Für Bildungswert, wird erwähnt, dass Sie Arrays verwenden können und Schleifen Ihr Programm Maßstab eine größere Anzahl von Spalten ohne mehr Code zu helfen ...

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[] 
Verwandte Themen