U E D R , A S I H C RSS

C++스터디_2005여름/학점계산프로그램/문보창

꼭 본 모두 로그램 기 바랍다.

CalculateGrade.h

~cpp 
#ifndef CALCULATEGRADE_H_
#define CALCULATEGRADE_H_

#include "Student.h"

class CalculateGrade
{
private:
	static const int NUM_STUDENT;	//  ()
	Student * student;		//  
public:
	CalculateGrade();		// 
	void sort_student();		// 렬
	void show_good_student();	//  명단 력
	void show_bad_student();	// 고 명단 력
	~CalculateGrade();		// 
};

#endif

CalculateGrade.cpp

~cpp 
#include <iostream>
using namespace std;
#include "CalculateGrade.h"

//   
// - 배 를 1부   보다 나 더 는다.
const int CalculateGrade::NUM_STUDENT = 121;

// 
CalculateGrade::CalculateGrade()
{
	//  당
	student = new Student[NUM_STUDENT];

	// 
	for (int i = 1; i < NUM_STUDENT; i++)
		student[i].input_grade();
}

// 다.
void CalculateGrade::sort_student()
{
	int p;
	Student temp;
	for (int i = 1; i < NUM_STUDENT; i++)
	{
		p = i;
		for (int j = i + 1; j < NUM_STUDENT; j++)
		{
			if (student[p].average < student[j].average)
				p = j;
		}
		temp = student[i];
		student[i] = student[p];
		student[p] = temp;
	}
}

// ( 10%)  명단다.
void CalculateGrade::show_good_student()
{
	int num = NUM_STUDENT / 10;

	sort_student();

	cout << " 명단\n";
	for (int i = 1; i <= num; i++)
		student[i].show();
	cout << "\n\n";
}

// 고( 1.5미만) 명단다.
void CalculateGrade::show_bad_student()
{
	cout << "고 명단\n";
	for (int i = 1; i < NUM_STUDENT; i++)
	{
		if (student[i].average < 1.5)
			student[i].show();
	}
	cout << "\n\n";
}

// 
CalculateGrade::~CalculateGrade()
{
	delete [] student;
}

Student.h

~cpp 
#ifndef STUDENT_H_
#define STUDENT_H_

class Student
{
private:
	static const int NUM_GRADE;	// 과목  ()
	int number;			// 
	double grade[4];		// 4과목 

public:
	double average;			// 

	Student();			// 
	void find_average();		// 
	void input_grade();		//  
	void show();			// 
};

#endif

Student.cpp

~cpp 
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

#include "Student.h"

//  
const int Student::NUM_GRADE = 4;

// 
Student::Student()
{
	average = 0.0;
	number = 0;
}

// 로부 4과목 는다.
void Student::input_grade()
{
	static char alpa_grade[9][3] = {"A+", "A", "B+", "B", "C+", "C", "D+", "D", "F"};
	static double ital_grade[9] = {4.5, 4.0, 3.5, 3.0, 2.5, 2.0, 1.5, 1.0, 0.0};
	static fstream fin("input.txt");

	char str[3];

	fin.ignore(100, ' ');	//  가 나때까  리는 

	fin >> number;

	fin.ignore(100, ':');		

	//  double 로 1대 1 로 변  력
	for (int i = 0; i < NUM_GRADE; i++)
	{
		fin >> str;			// >>  white space(공)다.
		for (int j = 0; j < 9; j++)
		{
			if (strcmp(str, alpa_grade[j]) == 0)
			{
				grade[i] = ital_grade[j];
				break;
			}
		}
	}
	fin.ignore(100, '\n');
	find_average();
}

// 4 과목  다.
void Student::find_average()
{
	double sum = 0.0;
	for (int i = 0; i < NUM_GRADE; i++)
		sum += grade[i];
	average = sum / NUM_GRADE;
}

//  보를 다.
void Student::show()
{
	cout << " : " << number << "    : " << average << endl;
}

testCalculateGrade.cpp

~cpp 
#include "CalculateGrade.h"

int main()
{
	CalculateGrade test;
	test.show_good_student();
	test.show_bad_student();
	return 0;
}

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:46
Processing time 0.0100 sec