본문으로 바로가기

중간고사 실기

category c++/대학 과제 2020. 5. 25. 08:40

 

내가 푼답

#include		<iostream> 
#include		<iomanip>
using namespace std;
#define STUDENT	5 

int static flag;  
const char		*head[] = {  "학생 신체 현황 자료 (입력순)",
											"학생 신체 현황 자료 (조건부)",
											"학생 신체 현황 자료 (성명순)" };
const char		*underline = "============================";
const char		*name[5] = { "김철수", "이영희","홍길동","오수정","박문수" };
int					birth[] = { 1993,	1995,	1992,	1997,	1994 };
double				height[] = { 177.5,	163.5,	174.6,	165.5,	180.3 };
double				weight[] = { 67.2,	  50.5,	  75.1,	  53.2,	  68.6 };

void print() {
	cout << setw(26) << "  " << underline << endl << endl;
	cout << setw(14) << " " << "성  명       출생년도(년)     신장(cm)      체중(kg)" << endl;
	cout << "\t    " << setfill('-') << setw(55) << "-" << endl << setfill(' ');
}

int main() 
{ 
	int				array[]  = { 70, 7, 54, 83, 98, 29, 41, 35, 12, 66, 0};
	int				abuff[]  = { 3, 12, 29, 34, 48, 55, 60, 77, 81, 96},
						bbuff[]  = { 5, 18, 21, 30, 49, 54, 63, 72, 86, 97},
						cbuff[20];
	int				i, j, count, num10 = 10, odd, even, max=0, min=200;
	int				index[] = { 0, 4, 3, 1, 2 };
	int				index_1[] = { 0 };
	int				index_2[] = { 0 };


	double			sum,sum_age=0,sum_height=0,sum_weight=0, heightmean=0., weightmean=0., average_arr=0., average_age=0. ;

//
// 문제 1.  원소 갯수, 배열 값, 최대 값/ 최소 값/합계 출력
//
	cout<<"\n문제 1. 원소 갯수, 배열 값, 최대 값/ 최소 값/합계 출력\n";

	i = 0; sum = 0.;

	for(i=0;i<10;i++) {
		sum = sum + array[i];

		if (max < array[i]) {
			max = array[i];
		}

		if (min > array[i]) {
			min = array[i];
		}
		
	}

	

	average_arr = sum / 10;

	count = i; 
	
	cout << "\n   .. 원소의 갯수 = " << count << "\n\n   .. 원소 출력\n";
	cout << "   " << setfill('-') << setw(73) << "-" << endl << setfill(' ');
	cout << "  ";
	for (j = 0; j < count; j++) cout << setw(7) << array[j];
	cout << "\n   " << setfill('-') << setw(73) << "-" << endl << setfill(' ');

	cout << "\n   .. 최대 값 = " << setw(4) << max <<setw(15)<< "최소 값 =   " <<  min << setw(12) << "합계 =   " << sum << setw(12) << "평균 =   " << average_arr << endl;

//
// 문제 2.	자료 종합(입력순) 출력 
//
	cout << "\n\n문제 2. 자료 종합(입력순)\n" << endl;
	cout << setw(26) << " " << head[0] << endl;
	print();

	for (i = 0; i < STUDENT; i++) {
	
		cout << setw(20) << name[i] << setw(15) << birth[i] << setw(15) << height[i]<< setw(15) << weight[i] << endl;
	}
//
// 문제 3. 나이(2020-생년), 신장 및 체중 평균 계산 출력
//
	cout<<"\n\n문제 3. 나이(2020-생년), 신장 및 체중 평균 계산 출력\n";

	for (i = 0; i < STUDENT; i++) {
		sum_age += 2020 - birth[i];
		sum_height += height[i];
		sum_weight += weight[i];
	}

	average_age = sum_age / STUDENT;
	heightmean = sum_height / STUDENT;
	weightmean = sum_weight / STUDENT;

	cout << "\n   .. 평균 나이 = " << setw(4) << average_age<<"세" << setw(20) << "평균 신장 =   " << heightmean << "cm" << setw(20) << "평균 체중 =   " << weightmean <<"kg" << endl;

//
// 문제 4. 평균 신장보다 작은 학생 선별 출력
//
	cout<<"\n\n문제 4. 평균 신장보다 작은 학생(평균 신장 "<<heightmean<<"cm)\n";

	

	
	cout <<endl<< setw(26) << " " << head[1] << endl;
	print();

	for (i = 0; i < STUDENT; i++) {
		if (height[i] < heightmean) {
			cout << setw(20) << name[i] << setw(15) << birth[i] << setw(15) << height[i]<< setw(15) << weight[i] << endl;
		}
	}
//
// 문제 5. 평균 체중보다 무거운 학생 선별 출력
//
	cout<<"\n\n문제 5. 평균 체중보다 무거운 학생(평균 체중 "<<weightmean<<"kg)\n\n";

	cout << endl << setw(26) << " " << head[1] << endl;
	print();

	for (i = 0; i < STUDENT; i++) {
		if (weight[i] > weightmean) {
			cout << setw(20) << name[i] << setw(15) << birth[i] << setw(15) << height[i]<< setw(15) << weight[i] << endl;
		}
	}
//
// 문제 6. 자료 종합 출력(성명순)
//

	for (i = 0; i < 4; i++) {
		for (j = 1 + i; j < 5; j++) {
			if (strcmp(name[i], name[j]) > 0)
			{
				swap(name[i], name[j]);
				swap(birth[i], birth[j]);
				swap(height[i], height[j]);
				swap(weight[i], weight[j]);

			}
		}
	}
	cout<<"\n\n문제 6. 자료 종합(성명순)\n\n";

	cout << endl << setw(26) << " " << head[2] << endl;
	print();

	for (i = 0; i < STUDENT; i++) {

		cout << setw(20) << name[i] << setw(15) << birth[i] << setw(15) << height[i]<< setw(15) << weight[i] << endl;
	}



	cout << endl << endl << ">> 작업이 종료되었습니다 !\n\n";
	return 0;
}

 
 

모범답안

#include		<iostream> 
#include		<iomanip>
using namespace std;
#define STUDENT 	5 

int static flag;  
const char		*head[] = {  "학생 신체 현황 자료 (입력순)",
											"학생 신체 현황 자료 (조건부)",
											"학생 신체 현황 자료 (성명순)" };
const char		*underline = "============================";
const char		*name[5] = { "김철수", "이영희","홍길동","오수정", "박문수" };
int					birth[] = { 1993,	1995,	1992,	1997,	1994 };
double				height[] = { 177.5,	163.5,	174.6,	165.5,	180.3 };
double				weight[] = { 67.2,	  50.5,	  75.1,	  53.2,	  68.6 };

void buff_cout(int count, int buff[]) {
	int   i;
	cout << "   ";
	for (i = 0; i < count; i++) cout << setw(7) << buff[i];
	cout << endl;
}

void list_cout(int id) {
	if (flag == 0) goto headingskip;
	cout<<setw(26)<<" "<<head[flag-1]<<endl;
	flag = 0;
	cout<<setw(26)<<" "<<underline<<endl<<endl;
	cout<<setw(14)<<" "<<"성  명       출생년도(년)     신장(cm)      체중(kg)"<<endl;
	cout<<"\t     "<<setfill('-')<<setw(54)<<"-"<<endl<<setfill(' ');
headingskip:
	cout<<setw(20)<<name[id]<<setw(15)<<birth[id]<<setw(15)<<height[id]<<setw(14)<<weight[id]<<endl;
}

int main() 
{ 
	int				array[]  = { 70, 7, 54, 83, 98, 29, 41, 35, 12, 66, 0};
	int				i, count, mx=0, mn=32767, num10 = 10;
	int				index[] = { 0, 4, 3, 1, 2};
	double			sum, sum1, sum2, sum3;
	double			yearmean, heightmean, weightmean;
//
// 문제 1.	원소 갯수, 배열 값, 최대 값/최소 값/합계 출력
//
	cout<<"문제 1. 원소 갯수, 배열 값, 최대 값/최소 값/합계 출력\n";
	i = 0; sum = 0.;
	while(true) {
		sum = sum + array[i];
		if (mx < array[i]) mx = array[i];
		if (mn > array[i]) mn = array[i];
		if(array[++i]==0) break;
	}
	count = i; cout << "\n   .. 원소의 갯수 = " << count << "\n\n   .. 원소 출력\n";
	cout<<"   "<<setfill('-')<<setw(73)<<"-"<<endl<< setfill(' ');
	buff_cout(count, array);
	cout<<"   "<<setfill('-')<<setw(73)<<"-"<<endl<<setfill(' ');
	cout << "\n   .. 최대 값 = " << setw(5)<<mx << "   최소 값 = " << mn;
	cout<<"   합계 = " << setw(5) << sum << "   평균 = " << setw(7) << sum / count << endl;
//
// 문제 2. 자료 종합(입력순) 출력
//
	cout<<"\n\n문제 2. 자료 종합(입력순)\n\n";
	flag = 1;
	for (i = 0; i<STUDENT; i++) list_cout(i);
//
// 문제 3. 나이(2020-생년), 신장 및 체중 평균 계산 출력
//
	cout << "\n문제3. 나이(2020-생년), 신장 및 체중 평균 계산 출력\n";
	sum1 = sum2 = sum3 = 0.;
	for (i = 0; i < STUDENT; i++) {
		sum1 += 2020 - birth[i];								// 나이 합산
		sum2 += height[i];										// 신장 합산
		sum3 += weight[i];										// 체중 합산
	}
	yearmean = sum1 / STUDENT;						// 나이 평균
	heightmean = sum2 / STUDENT;						// 평균 신장
	weightmean = sum3 / STUDENT;					// 평균 체중
	cout << "\n   .. 평균 나이 = " << setw(8) << yearmean << "세     평균 신장 = " <<
		heightmean << "cm     평균 체중 = " << weightmean << "kg\n";
//
// 문제 4. 평균 신장보다 키가 작은 학생 선별 출력
//
	cout<<"\n\n문제 4. 평균 신장보다 작은 학생(평균 신장 "<<heightmean<<"cm)\n\n";
	sum = 0.; flag = 2;
	for (i = 0; i<STUDENT; i++) if (height[i] < heightmean) list_cout(i);
//
// 문제 5. 평균 체중보다 무거운 학생 선별 출력
//
	cout<<"\n\n문제 5. 평균 체중보다 무거운 학생(평균 체중 "<<weightmean<<"kg)\n\n";
	sum = 0.; flag = 2;
	for (i = 0; i<STUDENT; i++) if (weight[i] > weightmean) list_cout(i);
//
// 문제 6. 자료 종합 출력(성명순) 
//
	cout<<"\n\n문제 6. 자료 종합(성명순)\n\n";
	flag = 3;
	for (i = 0; i < STUDENT; i++) list_cout(index[i]);
	cout<<endl<<endl;

	cout<<">> 작업이 종료되었습니다 !\n\n";
	return 0;
}

'c++ > 대학 과제' 카테고리의 다른 글

rep7  (0) 2020.05.30
rep6  (0) 2020.05.25
rep5  (0) 2020.05.25
rep4  (0) 2020.05.25
rep3  (0) 2020.05.25