안녕하세요. PCNI입니다.
오래간만에 TC로 프로그램을 짜니 옛날 생각이 나는군요.
그리고, 저는 다른 리포트로 프로그램 짜주는 것을 무지 싫어하지만,
(왜냐면, 도와주는 건 문제 없지만, 그렇게 되면 발전이 없을 것이기
때문입니다.) WITCHBBO님이 도움을 꼭 필요로 하는 것 같아 이렇게 도와
드립니다.그리고, 저의 뜻을 아신다면, 주석을 참조로 해서 반드시 소스
전체를 공부해서 이해한뒤, 저에게 메일 주셔야 합니다. 꼭요.
변수나 전체적인 처리과정은 번거럽더라도 WITCHBBO님의 소스형태에서
기본적으로 틀을 취했어요. 소스가 정리가 안 되었어요. 예를 들면 r이란
변수는 필요없답니다. 이해안 되시는 부분은 질문 주셔도 좋아요.
그럼 안녕히 계세요.
#include <stdio.h> /* 기본적인 헤더 화일 */
#include <conio.h>
#define All 3 /*전체 학생 수 입니다. 100명을 입력받고 싶으면 여기를 100으로
하시면 됩니다. 현재는 제가 테스트 한다고 3명으로 했어요.*/
main()
{
int a[All+1][8]; /*C의 배열은 기본적으로 a[0] 부터 시작합니다. 명심하세요 */
/* 101번째 방은 a[100][x]가 되겠죠 */
/* a[100][x]에 전체 반아이들의 과목별 평균을 냅니다.*/
int c[All+1]; /*등수를 내기 위해 평균을 저장하고 정렬할 변수 */
int i,j,r,temp;
char *b[All]; /*이름을 입력받습니다.*/
int rc = 0;
clrscr(); /*화면 청소*/
for(i=0;i<All+1;i++) /*배열 초기화*/
for(j=0;j<8;j++)
{
a[i][j] = 0;
c[i] = 0;
}
for(i=0;i<All;i++)
{
printf("Input Name [ex : HongGD] :"); /*입력부 : 이름 띄워쓰지 마세요*/
scanf("%s",b[i]); /* ex에 있는 형태로 입력해 주세요 */
printf("Input SungJuk [ex : 80 85 90 80 100] :"); /*과목별 성적 입력 */
scanf("%d %d %d %d %d",&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4]);
for(j=0; j<5; j++) /* 합계 */
a[i][5]+=a[i][j];
a[i][6]=a[i][5] / 5; /* 평균 */
}
for(i=0;i < All;i++) /* 반아이들의 과목별 합산 */
for(j=0;j<7;j++)
a[All][j] = a[All][j] + a[i][j];
for(j=0;j<7;j++)
a[All][j] = a[All][j] / All; /*합산된 과목의 평균을 내기 위해
전체 학생수로 나누어 줍니다.
평균을 원하지 않을때는 이두줄을
지워 주시면 되겠죠*/
r = 0;
for(i = 0 ;i < All ;i++) /* c배열에 평균성적 옮김 */
c[i] = a[i][6];
for(i = 0;i < All;i++) /* c에 있는 것을 내림차순으로 정렬함 */
for(j = i;j < All;j++)
if(c[i]<c[j])
{
temp = c[i];
c[i] = c[j];
c[j] = temp;
}
for(i = 0;i < All; i++) /* c에 정렬된 것과 a의 평균이 같으면 그것이 등수 */
for(j = 0;j < All;j++) /* 이 부분 이해 잘 하셔야 합니다. */
if(a[i][6] == c[j]) a[i][7] = j+1;
/*이제 부터 출력부 */
printf("Bunho Name Subj1 Subj2 Subj3 Subj4 Subj5 Total Ave Grade\n");
printf("-----------------------------------------------------------------------------\n");
/*학생별로 출력*/
for(i=0;i< All;i++)
{
printf("%5d %6s",i + 1,b[i]);
for(j=0;j<8;j++)
printf(" %5d",a[i][j]);
printf("\n");
}
printf("-----------------------------------------------------------------------------\n");
/*반전체 평균 출력부*/
printf("Sum :");
for(j=0;j<7;j++)
printf(" %5d",a[i][j]);
printf("\n-----------------------------------------------------------------------------\n");
getch();
}
<제가 예제로 해본 화면>
Input Name [ex : HongGD] :Kang
Input SungJuk [ex : 80 85 90 80 100] :80 100 75 80 70
Input Name [ex : HongGD] :Kim
Input SungJuk [ex : 80 85 90 80 100] :100 100 90 85 80
Input Name [ex : HongGD] :Lee
Input SungJuk [ex : 80 85 90 80 100] :100 70 80 60 80
Bunho Name Subj1 Subj2 Subj3 Subj4 Subj5 Total Ave Grade
-----------------------------------------------------------------------------
1 Kang 80 100 75 80 70 405 81 2
2 Kim 100 100 90 85 80 455 91 1
3 Lee 100 70 80 60 80 390 78 3
-----------------------------------------------------------------------------
Sum : 93 90 81 75 76 416 83
-----------------------------------------------------------------------------
|