프로그래밍-1/C++

(Accelerated C++) 학생 성적 계산하기

daslyee 2013. 8. 18. 23:54
728x90

※ 이 예제 소스는 "Accelerated C++ 예제로 배우는 진짜배기 c++ 프로그래밍"에서 따온 것임을 알려드립니다.


 
#include <iostream>
#include <ios>
#include <iomanip>
#include <string>
#include <vector>
#include <algorithm>

using std::cin; using std::setprecision;
using std::cout; using std::string;
using std::endl; using std::streamsize;
using std::vector; using std::sort;

int main(){
	//학생의 이름을 묻고 읽어들임
	cout<<"Please enter your first name : ";
	string name;
	cin>>name;
	cout<<"Hello, "<<name<<"!"<<endl;

	//중간고사와 기말고사 성적을 묻고 읽어들임
	cout<<"Please enter your midterm and final exam grades : ";
	double midterm, final;
	cin>>midterm>>final;

	//과제성적을 요구함
	cout<<"Enter all your homework grades, ""followed by endoffile : ";
	vector<double> homework;
	double x;
	//불변식 : homework는 모든 과제성적을 담습니다.
	while (cin >> x)
		homework.push_back(x);

	//학생이 과제성적을 입력했는지를 확인
	typedef vector<double>::size_type vec_sz;
	vec_sz size = homework.size();
	if(size == 0){
		cout<<endl<<"You must enter your grades."
			"Please try again."<<endl;
		return 1;
	}
	
	//성적 정렬
	sort(homework.begin(), homework.end());

	//과제성적의 중앙 값 계산
	vec_sz mid = size/2;
	double median;
	median = size % 2 == 0 ? (homework[mid] + homework[mid]) / 2 : homework[mid];

	//최종 성적을 계산

	streamsize prec = cout.precision();
	cout<<"Your final grade is " << setprecision(3)
		<<0.2*midterm + 0.4* final + 0.4 * median
		<<setprecision(prec)<<endl;

	return 0;
}



728x90

'프로그래밍-1 > C++' 카테고리의 다른 글

sort를 이용한 랜덤 백터값 정렬.  (0) 2013.08.15