3. 과제 ¶
- 사골국물처럼 우려낸성적 통계 프로그램.
 - 입력받은 세 명의 학생들의 성적을 가로 그래프로 보여주는 프로그램.(세로 그래프로 구현한다면 중간고사 끝나는 날 밥을 사겠다!)
 - 진짜요? - 최다인
 
 
- 진짜요? - 최다인
- 과목은 언, 수, 외, 탐. 그리고 평균에 대한 그래프도 보여줄 것.
 
- 100점 만점.
 
- 5점당 * 한 개로, 100점이면 20개이며 5점당 1개씩 줄어든다.(즉, 5 단위로 올림처리할 것)
 
 
- 입력받은 세 명의 학생들의 성적을 가로 그래프로 보여주는 프로그램.(세로 그래프로 구현한다면 중간고사 끝나는 날 밥을 사겠다!)
- 그래프를 그리는 과정은 반드시 함수로 추상화해 줄 것. 그 외에는 편한대로 함수로 해도 되고 안해도 됨.
 
- 되도록이면 배열도 써먹었으면 좋겠음.
 
 
- 출력예시
 
(입력 88/69/85/77) 아무개 언어 ****************** 수리 ************** 외국어 ***************** 탐구 **************** 평균 ****************
3.1. 임기찬 ¶
#include <stdio.h>
#define GRAPH 5 // 이 숫자당 별 1개로 그래프 그림.
#define NUM 3	// 이 숫자만큼 학생수를 입력받음.
void draw(int kor, int math, int eng, int rea, int ave);
int main()
{
	char stu[NUM][20] = { 0, { 0, } };
	int kor[NUM] = { 0, }, math[NUM] = { 0, }, eng[NUM] = { 0, }, rea[NUM] = { 0, }, ave[NUM] = { 0, };
	int i, j;
	for (i = 0; i < NUM; i++){
		printf("%d번째 학생입니다. \n", i + 1);
		printf("이름을 입력해 주세요 : ");
		gets(stu[i]);
		while (1){
			printf("국어 점수를 입력해 주세요. : ");
			j = scanf("%d", &kor[i]);
			if (j == 0 || kor[i] < 0 || kor[i] > 100) {
				printf("잘못된 입력입니다 \n");
				printf("다시 입력해 주세요. \n");
				fflush(stdin);
			}
			else
				break;
		}
		while (1) {
			printf("수학 점수를 입력해 주세요. : ");
			j = scanf("%d", &math[i]);
			if (j == 0 || math[i] < 0 || math[i] > 100){
				printf("잘못된 입력입니다. \n");
				printf("다시 입력해 주세요. \n");
				fflush(stdin);
			}
			else
				break;
		}
		while (1) {
		printf("영어 점수를 입력해 주세요. : ");
		j = scanf("%d", &eng[i]);
		
		if (j == 0 || eng[i] < 0 | eng[i] > 100){
			printf("잘못된 입력입니다. \n");
			printf("다시 입력해 주세요. \n");
			fflush(stdin);
		}
		else
			break;
		}
		while (1) {
		printf("탐구 점수를 입력해 주세요. : ");
		j = scanf("%d", &rea[i]);
		
		if (j == 0 || rea[i] < 0 || rea[i] > 100){
			printf("잘못된 입력입니다. \n");
			printf("다시 입력해 주세요. \n");
			fflush(stdin);
		}
		else
			break;
		}
		printf("\n");
		fflush(stdin);
		ave[i] = (kor[i] + math[i] + eng[i] + rea[i]) / 4;
	}
	for (i = 0; i < NUM; i++){
		printf("%d번째 학생입니다. \n", i + 1);
		printf("이름 : %s \n\n", stu[i]);
		draw(kor[i], math[i], eng[i], rea[i], ave[i]);
		printf("\n");
	}
	return 0;
}
void draw(int kor, int math, int eng, int rea, int ave){
	int x, y = 100 / GRAPH, kg, mg, eg, rg, ag;
	kg = (kor + 4) / GRAPH, mg = (math + 4) / GRAPH, eg = (eng + 4) / GRAPH;
	rg = (rea + 4) / GRAPH, ag = (ave + 4) / GRAPH;			//올림 하기 위해 +4
	for (x = 1; x <= 100 / GRAPH; x++){
		printf("%d\t", y*GRAPH);
		if (kg >= y)
			printf("*\t");
		else
			printf("\t");
		if (mg >= y)
			printf("*\t");
		else
			printf(" \t");
		if (eg >= y)
			printf("*\t");
		else
			printf(" \t");
		if (rg >= y)
			printf("*\t");
		else
			printf(" \t");
		if (ag >= y)
			printf("*\n");
		else
			printf(" \n");
		y--;
	}
	printf("0\t국어\t수학\t영어\t탐구\t평균\n");
	printf("\t%d\t%d\t%d\t%d\t%d\n", kor, math, eng, rea, ave);
}
- 5 단위로 올림하라니까;;그거만 예외처리를 제외하면 거의 정답. 범위 제한이나 잘못된 입력에 대한 예외처리는 안했네. 설계가 아직 미숙한거는 어쩔 수 없지만 잘했어 잘했어 - 원준연
 
 
3.2. 최필립 ¶
*사람은 한계에 몰렸을때 가장 큰 효율이 나오는 법이죠
#include <stdio.h>
void graph(int x,int y,int z);
int main()
{
	int kor[3]={0,},eng[3]={0,},mat[3]={0,},i=0,count;
	while(i<3)
	{
		printf("%d째 학생의 국어성적을 입력해주세요. : ",i+1);
		scanf("%d",&kor[i]);
		printf("%d째 학생의 영어성적을 입력해주세요. : ",i+1);
		scanf("%d",&eng[i]);
		printf("%d째 학생의 수학성적을 입력해주세요. : ",i+1);
		scanf("%d",&mat[i]);
		i++;
		printf("\n");
	}
	for(count=0;count<3;count++)
	{
	printf("그래프\n");
	graph(kor[count],eng[count],mat[count]);
	printf("\n\n");
	
	}
	return 0;
}
void graph(int x,int y,int z)
{
	
	int a,b,c,exa,exb,exc;
	a=x/5;
	b=y/5;
	c=z/5;
	exa=x;
	exb=y;
	exc=z;
	printf("국어 : ");
	while(a!=0)
	{
		printf("*");
		a--;
	}
	if(exa%5==0)	printf("\n");
	else printf("*\n");
	printf("영어 : ");
	while(b!=0)
	{
		printf("*");
		b--;
	}
	if(exb%5==0)	printf("\n");
	else printf("*\n");
	printf("수학 : ");
	
	while(c!=0)
	{
		printf("*");
		c--;
	}
	if(exc%5==0)printf("\n");
	else printf("*\n");
}
3.3. 홍성현 ¶
원래 아이디어는 찔끔찔끔 써줘야 제맛
별 그리는거 if문으로 일일이 때려박기는 어려울터이니
a=a-5 이런식으로 해서 a<0이 되기 전까지 반복문으로 삥삥 돌리구
세로 그래프 출력하려면 자릿수 맞춰서 때려박아봐야징!
함수 이해를 제대로 못했어요.. -_..
#include <stdio.h>
int main()
{
	int a,i=0,kor,mat,eng,tam,av;
	char st[10],c_kor[20]={0,},c_mat[20]={0,},c_eng[20]={0,},c_tam[20]={0,},c_av[20]={0,};
	
	for(a=3;a>0;a--){
	printf("이름을 입력하세요\n");
	scanf("%s",st);
	printf("국어 성적을 입력하세요\n");
	scanf_s("%d",&kor);
	printf("수학 성적을 입력하세요\n");
	scanf_s("%d",&mat);
	printf("외국어 성적을 입력하세요\n");
	scanf_s("%d",&eng);
	printf("탐구 성적을 입력하세요\n");
	scanf_s("%d",&tam);
	av=(kor+mat+eng+tam)/4;
	printf("%s",st);
	printf("\n국어");
	for(kor;kor>0;kor=kor-5)
	{c_kor[i]='*';
	printf("%c",c_kor[i]);
	i++;}
	i=0;
	printf("\n수학");
	for(mat;mat>0;mat=mat-5)
	{c_mat[i]='*';
	printf("%c",c_mat[i]);
	i++;}
	i=0;
	printf("\n외국어");
	for(eng;eng>0;eng=eng-5)
	{c_eng[i]='*';
	printf("%c",c_eng[i]);
	i++;}
	i=0;
	printf("\n탐구");	
	for(tam;tam>0;tam=tam-5)
	{c_tam[i]='*';
	printf("%c",c_tam[i]);
	i++;}
	i=0;
	printf("\n평균");	
	for(av;av>0;av=av-5)
	{c_av[i]='*';
	printf("%c",c_av[i]);
	i++;}
	i=0;
	printf("\n");
	}
	return 0;
}
함수는 일단은 포기!
기프 실습시간에 npc에게 함수를 물어서 재창조
#include <stdio.h>
void graph(int a,char c_kor[20]){
	int i=0;
	for(i;i<(a+4)/5;i++){
		c_kor[i]='*';
		printf("%c",c_kor[i]);
	}
	return ;
}
int main()
{
	int i,kor,mat,eng,tam,av;
	char st[10],c_kor[20]={0,},c_mat[20]={0,},c_eng[20]={0,},c_tam[20]={0,},c_av[20]={0,};
	for(i=0;i<3;i++){
	printf("이름을 입력하세요\n");
	scanf("%s",st);
	
	printf("국어,수학,외국어,탐구 성적을 입력하세요. ex>50,40,30,20\n");
	scanf("%d,%d,%d,%d", &kor, &mat, &eng, &tam);
	printf("  국어");
	graph(kor,c_kor);
	printf("\n  수학");
	graph(mat,c_mat);
	printf("\n외국어");
	graph(eng,c_eng);
	printf("\n  탐구");
	graph(tam,c_tam);
	printf("\n  평균");
	av=(kor+mat+eng+tam)/4;
	graph(av,c_av);
	printf("\n");
	}
	
	return 0;
}













