씨언어 질문이요...소스 있음...
뿡뿡몬
문제)
300명 이하의 자료에 학생의 이름과 c언어, vb, db, java 점수를 입력받아
총점과 평균을 구하고 총점으로 내림차순(DESCENDING) SORT하는 프로그램을 작성하시오.
조건)
1. 버블 sort개념을 이용하시오.
2. 입력 받는 자료를 5명 받고 EOF(^z)키를 입력 받으면 종료 출력시키도록 코딩할 것.#include stdio.h
#include conio.h
#include string.h
void main()
{
static char name[300][32]; //이름을 저장할 배열을 선언합니다.
static int sungjuk[1][32]; //성적과 총점, 평균을 저장할 배열을 선언합니다.
int i=0,j,k=1;
int count = 0;
static char ntemp[300]; //내림차순을 위한 배열입니다.(임시 이름저장 배열)
static int ctemp[300][6]; //내림차순을 위한 배열입니다.(임시 성적, 총점,평균저장 배열)
while(i300)//while문은 300명을 받는것이기때문에 조건을 이렇게 준겁니다.
{
printf( # 이름 : );
if(scanf(%s,&name[i][0]) == 0) //^Z키입력시 scanf문자열입력시 retrun값이 0이됩니다.
break;
printf( # c언어 : );
if(scanf(%d, &sungjuk[i][0]) == -1)// c언어 ^Z키입력시 scanf정수입력시 retrun값이 -1이됩니다.
break;
printf( # vb : );
if(scanf(%d, &sungjuk[i][1] ) == -1)// vb ^Z키입력시 어느 부분에서든 빠져나갈수 있습니다.
break;
printf( # db : );
if(scanf(%d, &sungjuk[i][2]) == -1)//db
break;
printf( # java : );
if(scanf(%d, &sungjuk[i][3]) == -1) // java
break;
sungjuk[i][4]=sungjuk[i][0]+sungjuk[i][1]+sungjuk[i][2]+sungjuk[i][3]; //총점
sungjuk[i][5]=(sungjuk[i][4])/4; //평균
i++;
count = count + 1;
}
for(i=1; i;)
{
for(j=0; j;)
{
if(sungjuk[i][4]sungjuk[j][4])
{
ctemp[i][0] = sungjuk[i][0];
ctemp[i][1] = sungjuk[i][1];
ctemp[i][2] = sungjuk[i][2];
ctemp[i][3] = sungjuk[i][3];
ctemp[i][4] = sungjuk[i][4];
ctemp[i][5] = sungjuk[i][5];
strcpy(&ntemp[0],&name[i][0]);// 이름은 여러명 입력시에는 2차원배열을 써야합니다. 왜그런지는 한번 생각해보세요
sungjuk[i][0] = sungjuk[j][0];
sungjuk[i][1] = sungjuk[j][1];
sungjuk[i][2] = sungjuk[j][2];
sungjuk[i][3] = sungjuk[j][3];
sungjuk[i][4] = sungjuk[j][4];
sungjuk[i][5] = sungjuk[j][5];
strcpy(&name[i][0],&name[j][0]);//strcpy는 문자열을 복사하는겁니다.
sungjuk[j][0] = ctemp[i][0];
sungjuk[j][1] = ctemp[i][1];
sungjuk[j][2] = ctemp[i][2];
sungjuk[j][3] = ctemp[i][3];
sungjuk[j][4] = ctemp[i][4];
sungjuk[j][5] = ctemp[i][5];
strcpy(&name[j][0],&ntemp[0]);
}
}
}
printf(==================================================\n);
printf(이름 c언어 vb db jave 총점 평균\n);
printf(==================================================\n);
for(i=0; icount; i++)
{
printf(%s\t%d\t%d\t%d\t%d\t%d\t%d\n,&name[i],sungjuk[i][0],sungjuk[i][1],sungjuk[i][2],sungjuk[i][3],sungjuk[i][4],sungjuk[i][5]);
}
getch();
}
여기서 컨트롤+Z 누르면 바로 총점하고 평균값이 나오게 하려면..어케 하죠? ㅜㅜ
-
미라 2024-10-02
컨트롤 z키에 해당하는 아스키코드가 있습니다. 이코드가 CPU에게 전달되기 전체 가로채서 출력하는 명령을 내리면 되지 않을까요?