2016-12-19 20 views
-3

私は10人の学生のためのマークの平均を計算するように頼まれました。平均を計算するには?

番号名称のTest1 Test2をTest3は

1アーマド58 97 83

2 Dollah 78: まず、私は次のようになりdata.txtをファイルからデータを読み取り、取得することができました76 70

3ラメシュ85 75 84

4 Maimunah 87 45 74

5ロバート74 68 97

6クマー77 73 45

7インタン56 23 27

8のPing 74 58 18

9 Idayu 47 98 95

10 Roslan 79 98 78

次に、各学生の平均と成績を決定する。

ここまでは私がこれまで行ってきたことです。

#include <iostream> 
#include <fstream> 
#include <cstdlib> 
#include <string> 

using namespace std; 

int main() 

{ 
    ifstream inFile1; 
    string temp; 
    int line=0; 

    inFile1.open("data.txt"); 
    if(inFile1.fail()) 
    { 
     cout << "File cannot be opened" << endl; 
     exit(1); 
    } 

    while(getline(inFile1, temp)) 
    { 
     line++; 
    } 
    inFile1.close(); 

    return 0; 
} 

このプログラムは、少なくとも2つのプロトタイプ関数average()とgrade()から構成されている必要があります。 これは私が立ち往生したところです。

+0

コードを含む画像へのリンクを投稿しないでください、コピー/使用して、あなたの質問に直接あなたのコードを貼り付けコードサンプルツール。 – Holt

答えて

1

ここで回答を確認できます:find average salaries from file in c++

ファイルラインを繰り返し処理するときは、temp文字列を目的のトークンに分割する必要があります。どのようにですか?オプションはgetlineとdelimeter ' 'を使用するか、またはstd::noskipwsストリームマニピュレータを調べるか、operator>>を使用してファイルから読み取ることができます。要件の詳細によって異なります。

私があなたのケースを正しく理解していれば、operator>>に行って、学生の名前を取得し、getline(inFile, gradesText)を使って、現在の生徒のすべての成績を取得することができます。

次に、文字列をグレードのベクトルに分割する別の関数を使用します。分割の仕方はSplit a string in C++?で確認できます。このようにして、vector<int> split(const string& line, char delim = ' ')のような機能を準備することができます。実装の中では、おそらくstd::stoiを文字列からintへの変換に使用するべきです。その後

、すでに適切なコレクションを持っている場合、あなたがして、そこから平均値を計算することができます。

const double sum = std::accumulate(grades.begin(), grades.end(), 0.0); 
const double gradesMean = sum/grades.size();