PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2009/07/20 12:13:42
Name 시봉창
Subject C언어 질문입니다.
성적처리 프로그램을 만드는 것인데요..

성적을 입력받으면 총점, 평균을 계산한 뒤에 석차를 매겨서 정렬하는 것입니다.

점수가 같다면 같은 등수가 되고요..(1등이 2명이면 그 다음은 3등으로)

총점, 평균, 석차 계산하는 함수는 따로 작성해야하구요..

총점이랑 평균 계산하는 것은 코딩을 했는데요. 석차계산은 어떻게 할지 모르겠습니다. 특히 같은 점수는 같게하고..

그걸 다시 정렬하는 것에서 어떻게해야할지 모르겠네요..

#include <stdio.h>

struct data // 학번, 이름, 성적 등을 입력할 타입의 구조체 선언.
{
        char num[20]; // 학번.
        char name[20]; // 이름.
        int kor; // 국어 성적.
        int eng; // 영어 성적.
        int math; // 수학 성적.
        int sci; // 과학 성적.
        int total; // 총점.
        double avg; // 평균
        int rank; // 등수.
};

void tota(int *ko, int *en, int *ma, int *sc, int *to); // 총합을 계산하는 함수 선언.
void aver(int *to, double *av);

int main(void)
{
        struct data stu[10]; // 학생 10명에 정보를 받기위한 변수 선언.
        int i;

        for(i=0;i<2;i++)
        {
                printf("학번, 이름, 성적(국어, 영어, 수학, 과학 순으로)을 입력하시오 : "); // 학생 정보 입력.
                scanf("%s %s %d %d %d %d", stu[i].num, stu[i].name, &stu[i].kor, &stu[i].eng, &stu[i].math, &stu[i].sci); // 학생 정보 입력.
                stu[10].rank=i; // 우선적으로 등수를 메긴다.
                tota(&stu[i].kor, &stu[i].eng, &stu[i].math, &stu[i].sci, &stu[i].total);
                printf("%d\n", stu[i].total); // 일단은 출력하고 보자.
                aver(&stu[i].total, &stu[i].avg);
                printf("%f", stu[i].avg); // 일단은 출력하고 봅자.
        }

        return 0;
}

void tota(int *ko, int *en, int *ma, int *sc, int *to) // 총합을 계산하는 함수 선언.
{
        int tot;
        tot=((*ko)+(*en)+(*ma)+(*sc));
        *to=tot; // 전달 받은 값을 total의 주소값에 저장.
}

void aver(int *to, double *av) // 평균을 구하는 함수 선언.
{
        double aver;
        aver = (double)(*to)/4;
        *av = aver; // 계산한 평균의 값을 av의 주소값에 저장.
}

여기까지가 제 힘으로 작성한 코드인데.. 이제 등수를 매겨야하는데...

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
MoreThanAir
09/07/20 12:40
수정 아이콘
정렬 알고리즘들을 찾아보세요. 가장 간단한걸로는 bubble sort부터 해서
insertion sort, selection sort.

그리고 대부분의 경우에 조금 더 좋은 결과를 원하신다면 quick sort와 merge sort도 찾아보시는게 좋겠네요-
Persious
09/07/20 13:09
수정 아이콘
1. 데이터를 입력받는다.
2. 총점, 평균을 구한다.
3. 총점에 따라 내림차순으로 정렬한다.
4. 석차를 구한다
4-1. i번째 학생이 첫번째일 경우(i=0) 석차를 i+1로 한다.
4-2. i번째 학생의 총점이 i-1번째 학생의 총점과 다르면 석차를 i+1로 한다.
4-3. i번째 학생의 총점이 i-1번째 학생과 같으면 i-1번째 학생의 석차와 같게 한다.
5. 출력한다.

이정도로 구현하시면 될것 같네요. 1,2,5번은 이미 만드신거고 순서만 적당히 옮기시면 될듯하고.. 3번 정렬부분은 윗분 말씀대로 한번 찾아보시길 바랍니다. 정렬방식에 따라 비교하는 순서만 다를뿐 결국 작은 숫자를 뒤로, 큰 숫자를 앞으로 옮겨온다는건 똑같습니다. (내림차순의 경우) 4번은 이미 정렬이 됐으면 하실수 있을꺼예요.
큐리스
09/07/20 13:47
수정 아이콘
정렬에 대해 공부하시는 거라면
수업시간에 정렬에 대해 공부하신 내용대로 하셔야 될 거구요.
그게 아니라면 qsort 함수를 쓰시면 될 것 같습니다.
09/07/20 21:18
수정 아이콘
정렬은 죽어도 쓰기 싫다 하시면, 등수를 구하고 싶은 놈이 있다고 치면, 그 놈보다 더 좋은 녀석이 몇 명인지 세어주면 됩니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
60016 2대의 컴퓨터로 1:1 스타를 하고 싶습니다. [9] Suiteman2119 09/07/20 2119
60015 뱃살을 빼고 싶어요 [19] [한빛]2229 09/07/20 2229
60014 저그 대 토스전에 관한 질문입니다.~ [6] 세느1636 09/07/20 1636
60013 20대 초반의 대학생이 투자할만한곳은 무엇이있을까요? [12] 하얀거탑2321 09/07/20 2321
60011 글이 맛깔나게 쓰인 소설은 어떤게 있을까요..? [7] 라이시륜1761 09/07/20 1761
60010 요즘 MTG 관련 상품 구할수있는 곳 있나요? [3] TWINSEEDS1510 09/07/20 1510
60009 공중파와 지상파의 차이점... [5] 본호라이즌10775 09/07/20 10775
60008 요 며칠 사이에 유투브가 무지 느려졌습니다. 2047 09/07/20 2047
60007 금융사 홈페이지에 안들어가집니다 ㅠ_ㅜ wish burn1899 09/07/20 1899
60006 다음주에 해운대로 놀러갈 예정인데.. [3] 드림씨어터1669 09/07/20 1669
60005 preceding fall이 뭔가요? [3] The Greatest Hits1639 09/07/20 1639
60004 007시리즈 질문 [3] 후니저그1648 09/07/20 1648
60003 회사에서 래프팅 갈려고 합니다. 정보 좀 부탁 드려요. [4] 태바리2116 09/07/20 2116
60002 컴퓨터 관련 블루 스크린에 대해 질문요 [1] possible2286 09/07/20 2286
60001 스타질문 및 건의사항!? [3] 후니저그1920 09/07/20 1920
60000 통장 관리에 대한 질문좀.. [1] o에코o1251 09/07/20 1251
59999 복학과 군휴학.. [2] 오월1584 09/07/20 1584
59998 노트북 어댑터 관련질문입니다. 관리지1556 09/07/20 1556
59997 몽골에 가보신분 있나요? [2] 로랑보두앵2154 09/07/20 2154
59996 C언어 질문입니다. [4] 시봉창4719 09/07/20 4719
59995 다이어트를 위한 운동??? 식시량조절?? 진리가 뭘까요? [6] 김군이라네2091 09/07/20 2091
59994 신피지 C급 토스 질문이요.(3) [4] 택빠1547 09/07/20 1547
59992 롯데의 최근 상승세에 대한 질문입니다. [16] 정태영1565 09/07/20 1565
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로