수다님들 ㅠㅠ
바나나맛캔디
질문 제목 : 소트처리?질문 요약 :배열은순서없이 해놓고환산총점이 높은순으로 내림차순으로 나열하는 방법질문 내용 : 현재 이정도로 소스를 만들었는데, 환산총점이 높은순으로 내림차순을 만들고 싶습니다.
어렵게 말고 for문이나 간단한 것을 활용해서 어떻게 만들어야할지 가르쳐주세요..
#include stdio.h
void grade(int);
int main()
{
FILE *score;
char name[100][10], a;
int hakbun[100], comp[100], eng[100], math[100], clang[100], phi[100], ttot[100], i=0;
double tavg[100];
score = fopen(sungjuk.txt, r);
printf( 성 명 학 번 컴퓨터 영 어 수 학 C 언어 물 리 환산총점 환산평점 등급 \n);
printf(=======================================================================================\n);
if(score==NULL)
{
printf(\sungjuk.txt\ 이 열리지 않았습니다.\n);
return 1;
}
while(1)
{
a = fscanf(score,%s%d%d%d%d%d%d,name[i],&hakbun[i],&comp[i],&eng[i],&math[i],&clang[i],&phi[i]);
if(a==EOF) break;
comp[i] = comp[i];
eng[i] = eng[i];
math[i] = math[i];
clang[i] = clang[i];
ttot[i] = comp[i] * 3 + eng[i] * 2 + math[i] * 3 + clang[i] * 2 + phi[i];
tavg[i] = ttot[i] / 11.0;
printf( %-8s %8d ,name[i],hakbun[i]);
grade(comp[i]);
printf((%3d) , comp[i]);
grade(eng[i]);
printf((%3d) , eng[i]);
grade(math[i]);
printf((%3d) , math[i]);
grade(clang[i]);
printf((%3d) , clang[i]);
grade(phi[i]);
printf((%3d) , phi[i]);
printf(%4d %3.2lf ,ttot[i],tavg[i]);
grade((int)tavg[i]);
printf(\n);
i++;
}
return 0;
}
void grade(int sc)
{
if(sc = 95)
printf(A+);
else if(sc 95 && sc = 90)
printf(A0);
else if(sc 90 && sc = 85)
printf(B+);
else if(sc 85 && sc = 80)
printf(B0);
else if(sc 80 && sc = 75)
printf(C+);
else if(sc 75 && sc = 70)
printf(C0);
else if(sc 70 && sc = 65)
printf(D+);
else if(sc 65 && sc = 60)
printf(D0);
else printf(F );
}
-
빵돌
소트 처리방법에서 한가지가 셀렉션(선택) 소트가 있습니다
for(i=0;idata-1;i++){
for(j=i+1;jdata;j++){
if(d[i]d[j]){
tmp=d[i];
d[i]=d[j];
d[j]=tmp;
}
}
//내림차순
data 는 배열의 크기 입니다 즉
int a[100];
을 했을때 100 이 되겠죠
이걸 응용해서 짜보세요 ^^