2016-12-19 9 views
-3

나는 10 명의 학생에 대한 점수의 평균을 계산하도록 요청 받았다.평균 계산 방법은?

번호 명칭 Test1을 Test2를 테스트 3

아마드 1 58 97 83

2 Dollah 78 우선, I는 다음과 같다 data.txt로 파일의 데이터를 판독하고 검색 할 수 있었다 76 70

라메 3 85 75 84

Maimunah 4 87 45 74

,745,151 5,

5 로버트 74 68 97

6 쿠마 77 73 45

7 Intan 56 23 27

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

이 프로그램은 적어도 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 = ' ')과 같은 기능을 준비 할 수 있습니다. 구현 내에서 문자열 - int 변환에 std::stoi을 사용해야합니다. 이미 적절한 컬렉션이 때

그 후, 당신과 그것에서 평균을 계산할 수 있습니다

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