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] Suiteman2115 09/07/20 2115
60015 뱃살을 빼고 싶어요 [19] [한빛]2227 09/07/20 2227
60014 저그 대 토스전에 관한 질문입니다.~ [6] 세느1631 09/07/20 1631
60013 20대 초반의 대학생이 투자할만한곳은 무엇이있을까요? [12] 하얀거탑2314 09/07/20 2314
60011 글이 맛깔나게 쓰인 소설은 어떤게 있을까요..? [7] 라이시륜1756 09/07/20 1756
60010 요즘 MTG 관련 상품 구할수있는 곳 있나요? [3] TWINSEEDS1505 09/07/20 1505
60009 공중파와 지상파의 차이점... [5] 본호라이즌10772 09/07/20 10772
60008 요 며칠 사이에 유투브가 무지 느려졌습니다. 2044 09/07/20 2044
60007 금융사 홈페이지에 안들어가집니다 ㅠ_ㅜ wish burn1897 09/07/20 1897
60006 다음주에 해운대로 놀러갈 예정인데.. [3] 드림씨어터1667 09/07/20 1667
60005 preceding fall이 뭔가요? [3] The Greatest Hits1636 09/07/20 1636
60004 007시리즈 질문 [3] 후니저그1645 09/07/20 1645
60003 회사에서 래프팅 갈려고 합니다. 정보 좀 부탁 드려요. [4] 태바리2113 09/07/20 2113
60002 컴퓨터 관련 블루 스크린에 대해 질문요 [1] possible2280 09/07/20 2280
60001 스타질문 및 건의사항!? [3] 후니저그1918 09/07/20 1918
60000 통장 관리에 대한 질문좀.. [1] o에코o1249 09/07/20 1249
59999 복학과 군휴학.. [2] 오월1583 09/07/20 1583
59998 노트북 어댑터 관련질문입니다. 관리지1553 09/07/20 1553
59997 몽골에 가보신분 있나요? [2] 로랑보두앵2152 09/07/20 2152
59996 C언어 질문입니다. [4] 시봉창4717 09/07/20 4717
59995 다이어트를 위한 운동??? 식시량조절?? 진리가 뭘까요? [6] 김군이라네2090 09/07/20 2090
59994 신피지 C급 토스 질문이요.(3) [4] 택빠1545 09/07/20 1545
59992 롯데의 최근 상승세에 대한 질문입니다. [16] 정태영1563 09/07/20 1563
목록 이전 다음
댓글

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