ㅠ_ㅠC언어 짠거 수정좀 부탁 드립니다..내공 드림.ㅠㅠ

ㅠ_ㅠC언어 짠거 수정좀 부탁 드립니다..내공 드림.ㅠㅠ

작성일 2006.12.08댓글 1건
    게시물 수정 , 삭제는 로그인 필요

#include <stdio.h>

struct sungjuk{
 char name[10];
 int en;
 int mat;
 int kor;
 int tot;
 double avg;
 float grade;
 int sort;
};

void total(struct sungjuk *psj)
{
 int i;
 for(i = 0; i < 10; i++, psj++)
 {
  psj->tot = psj->en + psj->kor + psj->mat;

 }
}

void avg(struct sungjuk *psj)
{
 int i;
 for(i = 0; i < 10; i++, psj++)
  psj->avg = psj->tot / 3.0;

}


void f_grade (struct sungjuk *psj)
{
 int i;

 for(i = 0; i < 10; i++, psj++)
 {
  if( (psj->avg >= 90) && (psj->avg <=100))
   psj->grade = 'A';
  else if( (psj->avg >= 80) && (psj->avg <90))
   psj->grade = 'B';
  else if( (psj->avg >= 70) && (psj->avg <80))
   psj->grade = 'C';
  else if( (psj->avg >= 60) && (psj->avg <70))
   psj->grade = 'D';
  else if( (psj->avg >= 50) && (psj->avg <60))
   psj->grade = 'E';
  else
   psj->grade = 'F';
 }
}

void f_sort(struct sungjuk *psj)
{
 int i, j, count = 1;
 struct sungjuk *ptemp01 = psj;
 struct sungjuk *ptemp02 = psj;

 for(i=0; i<10; i++, ptemp01++)
 {
 // temp = ptemp01->tot;
  for(j=0; j<10; j++)
  {
   if(i==j)
    continue;
   if( (i != j) && (ptemp01->tot < (psj++)->tot))
    count++;
  }
  ptemp01->sort = count;
  psj = ptemp02;
  count = 1;
 }

}


void output(struct sungjuk *psj)
{
 int i;

 printf("------------------------------------------------------------\n");
 printf("이름 영어 수학 국어 총점 평균 학점 순위\n");
 printf("------------------------------------------------------------\n");
 
 for(i = 0; i < 10; i++, psj++)
 {
  printf("%s\t%d\t%d\t%d\t%d\t%.2f\t%c\t%d\n",
   psj->name, psj->en, psj->mat, psj->kor, psj->tot, psj->avg, psj->grade, psj->sort);

 }
 
}

void main()
{
 struct sungjuk sj[10] = {
  {"홍길동", 90, 80, 70, 0, 0, 0, 0},
  {"이길동", 95, 85, 75, 0, 0, 0, 0},
  {"김길동", 55, 75, 45, 0, 0, 0, 0},
  {"유길동", 75, 20, 55, 0, 0, 0, 0},
  {"안길동", 15, 20, 15, 0, 0, 0, 0},
  {"신길동", 52, 50, 80, 0, 0, 0, 0},
  {"강길동", 47, 25, 30, 0, 0, 0, 0},
  {"권길동", 44, 62, 64, 0, 0, 0, 0},
  {"하길동", 58, 72, 65, 0, 0, 0, 0},
  {"성길동", 48, 22, 85, 0, 0, 0, 0}
 };
 
// struct sungjuk *psj;
 
 total(sj);
 avg(sj);
 f_grade(sj);
 f_sort(sj);
 output(sj);


}

 

 

여기서요 ㅠㅠ 석차랑 평균이 영,,이상한데 ㅠㅠ

좀 수정좀 부탁 드릴께요 ㅠ_ㅠ...

 

 



profile_image 익명 작성일 -

위의 코드에서 grade를 float형으로 선언하셔서 에러가 나신겁니다.

grade에 'A','B'등 문자로 입력을 하셨는데, float형으로 선언한 grade에 char값을 입력하니

값이 이상하게 나올 수 밖에 없었죠.

 

그리고 출력해보시면 아시겠지만, 값을 보기 편하게 줄을 맞추어서 출력하도록 약간 수정하였습니다. 수정된 코드를 아래에 그대로 붙였습니다. 드래그해서 바로 실행시켜보세요. 좋은 답변이 되었으면 하네요^^

 

 

 

#include

struct sungjuk{
 char name[10];
 int en;
 int mat;
 int kor;
 int tot;
 double avg;
 char grade;
 int sort;
};

void total(struct sungjuk *psj)
{
 int i;
 for(i = 0; i  {
 psj->tot = psj->en + psj->kor + psj->mat;
 }
}

void avg(struct sungjuk *psj)
{
 int i;
 for(i = 0; i   psj->avg = psj->tot / 3.0;
}


void f_grade (struct sungjuk *psj)
{
 int i;

 for(i = 0; i  {
  if( (psj->avg >= 90) && (psj->avg    psj->grade = 'A';
  else if( (psj->avg >= 80) && (psj->avg    psj->grade = 'B';
  else if( (psj->avg >= 70) && (psj->avg    psj->grade = 'C';
  else if( (psj->avg >= 60) && (psj->avg    psj->grade = 'D';
  else if( (psj->avg >= 50) && (psj->avg    psj->grade = 'E';
  else
   psj->grade = 'F';
 }
}

void f_sort(struct sungjuk *psj)
{
 int i, j, count = 1;
 struct sungjuk *ptemp01 = psj;
 struct sungjuk *ptemp02 = psj;

 for(i=0; i {
 // temp = ptemp01->tot;
  for(j=0; j  {
   if(i==j)
    continue;
   if( (i != j) && (ptemp01->tot tot))
    count++;
  }
  ptemp01->sort = count;
  psj = ptemp02;
  count = 1;
 }

}


void output(struct sungjuk *psj)
{
 int i;

 printf("------------------------------------------------------------\n");
 printf("이름   영어   수학    국어     총점    평균    학점\t순위\n");
 printf("------------------------------------------------------------\n");
 
 for(i = 0; i  {
  printf("%s\t%d\t%d\t%d\t%d\t%.2f\t%c\t%d\n",
   psj->name, psj->en, psj->mat, psj->kor, psj->tot, psj->avg, psj->grade, psj->sort);

 }
 
}

void main()
{
 struct sungjuk sj[10] = {
  {"홍길동", 90, 80, 70, 0, 0, 0, 0},
  {"이길동", 95, 85, 75, 0, 0, 0, 0},
  {"김길동", 55, 75, 45, 0, 0, 0, 0},
  {"유길동", 75, 20, 55, 0, 0, 0, 0},
  {"안길동", 15, 20, 15, 0, 0, 0, 0},
  {"신길동", 52, 50, 80, 0, 0, 0, 0},
  {"강길동", 47, 25, 30, 0, 0, 0, 0},
  {"권길동", 44, 62, 64, 0, 0, 0, 0},
  {"하길동", 58, 72, 65, 0, 0, 0, 0},
  {"성길동", 48, 22, 85, 0, 0, 0, 0}
 };
 
// struct sungjuk *psj;
 
 total(sj);
 avg(sj);
 f_grade(sj);
 f_sort(sj);
 output(sj);


}
 

해석부탁드립니다(내공 100드림)

... 풀어서 쉽게 부탁드립니다.. 그냥 초보자한테 가르켜주는것 처럼요.ㅠㅠ 아직 C언어... 분들 부탁드려요 ^^ 내공 100드릴께요 #include...

꼭봐주세요 !! 내공 !! ㅠ_ㅠ 다이어트 !!

... ㅠㅠ 더 도움받도싶어서요 !! 내공드림 !! 저 간절해요 !!... 해요 ㅠ_ㅠ..부탁드립니다!!!! 조금 과체중이시긴... 너무맵고 음식도 제외하시고 . 적당량. 한그릇 다비우셔도...

[내공드림]커뮤니티(등급) 사이트를...

... 나이도 30이 다되 가다보니 C언어부터 배우기도 뭐하고... 또 아니면 ㅠㅠ 제로보드XE를 이용해서 만들수가... 부가설명도 좀 부탁드립니다. 내공은 확실하게 드리고 답변...