#include <stdio.h>
void print();
void print1();
void input(int n);
void subject(int n);
void resultprint(int n);
void Swap(int n);
int num[100][100];
double avg[100];
double avg1[100];
int main()
{
int n;
print();
printf("성적 처리할 학생들이 몇명입니까? ");
scanf("%d",&n);
input(n);
Swap(n);
print1();
resultprint(n);
subject(n);
return 0;
}
void print()
{
printf("┌─────────────┐\n");
printf("│성적 처리 프로그램입니다. │\n");
printf("└─────────────┘\n");
}
void input(int n)
{
int i, j = 0;
int sum;
for (i = 0; i < n; i++)
{
printf("%d번째 학생의 학번을 입력하고 Enter를 누르세요=", i + 1);
scanf("%d", &num[i][0]);
printf("국어점수를 입력하고 Enter를 누르세요=");
scanf("%d", &num[i][1]);
printf("영어점수를 입력하고 Enter를 누르세요=");
scanf("%d", &num[i][2]);
printf("수학점수를 입력하고 Enter를 누르세요=");
scanf("%d", &num[i][3]);
sum = 0;
for (j = 1; j < 4; j++)
{
sum += num[i][j];
}
avg1[i]=sum/3.0;
num[i][4]=sum;
}
}
void subject(int n)
{
int i,j;
int kors=0, engs=0,mats=0;
for(i=0; i<n; i++)
{
kors+=num[i][1];
engs+=num[i][2];
mats+=num[i][3];
avg[0]=kors/3.0;
avg[1]=engs/3.0;
avg[2]=mats/3.0;
}
printf("국어평균: %g\n영어평균:%g\n수학평균:%g\n",avg[0],avg[1],avg[2]);
}
void print1()
{
printf("┌─────────────────┐\n");
printf("│등수순으로 성적처리한 결과입니다. │\n");
printf("└─────────────────┘\n");
}
void resultprint(int n)
{
int i;
printf("학번\t총점\t평균\n");
for(i=0; i<n; i++)
printf("%4d %4d %4g\n", num[i][0],num[i][4],avg1[i]);
}
void Swap(int n)
{
int i,j;
int temp,temp1;
double temp2;
for(i=0; i<n-1;i++)
{
for(j=i+1; j<n; j++)
{
if(num[i][4] < num[j][4])
{
temp=num[i][0];
num[i][0]=num[j][0];
num[j][0]=temp;
temp1=num[i][4];
num[i][4]=num[j][4];
num[j][4]=temp1;
temp2=avg1[i];
avg1[i]=avg[j];
avg1[j]=temp2;
}
}
}
}
코드가좀길어서 죄송합니다만.. 1차원으로짤때는 정렬이 잘됬는데
이렇게 2차원으로바꿧더니 정렬부분이 되긴되는데 3명을 입력받앗으면 첫번째두번째 평균이 0으로 찍히고 세번째는 제대로 나오더군요..
어디가 문제인가요..