• CSE207 객체지향 강좌 및 C++ 관련, 누구나 묻고 답하는 게시판 입니다.
  • CSE207 수강생이 아니여도 편안하게 질문하세요.
  • 첨부화일은 이미지 화일 혹은 zip 화일로 업로드 하기를 권합니다.

제목lecture07 large data processing ppt 24쪽 코드 질문 있습니다2019-03-27 13:14
작성자

getStu 함수에서 ifstream stuFile>>stuID로 입력을 받게 됩니다. 그런데 ch7STUFL.DAT을 보면 stuid가 4글자인데 writestu 함수에서 출력되는 stuid을 확인해보면 2글자입니다. 왜그런지 알고 싶습니다. 


코드 첨부하겠습니다

#include <fstream>

#include <iostream>

#include<iomanip>

#include<cstdlib>

using namespace std;


bool getstu(ifstream& stufile, int& stuid, int& exam1, int& exam2, int& final);

void writestu(ofstream& gradesfile, int stuid, int avrg, char grade);

void calcgrade(int exam1, int exam2, int final, int& avrg, char& grade);


int main()

{

ifstream stufile;

cout << "begin student graden";

stufile.open("ch7STUFL.DAT");

if (!stufile)

{

cerr << "error";

exit(100);

}

ofstream gradesfile;

gradesfile.open("ch7stugr.DAT");

if (!gradesfile)

{

cerr << "errorn";

exit(102);

}

int stuid, exam1, exam2, final, avrg;

char grade;

while (getstu(stufile, stuid, exam1, exam2, final))

{

calcgrade(exam1, exam2, final, avrg, grade);

writestu(gradesfile, stuid, avrg, grade);

}


stufile.close();

gradesfile.close();

cout << "end student graden";

return 0;

}


bool getstu(ifstream& stufile, int & stuid, int& exam1, int& exam2, int& final) {

stufile >> stuid >> exam1 >> exam2 >> final;

if (!stufile)

return false;

return 1;

}


void calcgrade(int exam1, int exam2, int final, int&avrg, char& grade) {

avrg = (exam1 + exam2 + final) / 3;

if (avrg >= 90)

grade = 'a';

else if (avrg >= 80)

grade = 'b';

else if (avrg >= 70)

grade = 'c';

else if (avrg >= 60)

grade = 'd';

else 

grade = 'f';

}

void writestu(ofstream& gradefile, int stuid, int avrg, char grade) {

gradefile << setw(4) << stuid;

gradefile.fill(' ');

gradefile << setw(3) << avrg;

gradefile << ' ' << grade << endl;

}

댓글