게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C 언어 석차를 구하는 프로그래밍중 미묘하게 틀린값이 나옵니다.
게시물ID : programmer_19972짧은주소 복사하기
작성자 : 한시운
추천 : 0
조회수 : 2107회
댓글수 : 10개
등록시간 : 2017/03/14 20:12:20
옵션
  • 본인삭제금지
#pragma hdrstop
#pragma argsused

#include <stdio.h>
#include <tchar.h>

// 10명의 학생들에 대한 국어, 영어, 수학 성적을 입력받아 총점과 평균을 구하고
// 석차를 구한 다음 석차순으로 출력하는 프로그램을 작성하라.

// 학생 구조체 선언
struct student {
int KoreanScore;
int EnglighScore;
int MathScore;
int sum;
float average;
int ranking;
int count;
};

int main() {
// 변수 선언
struct student sd[10];
int i, j, k, q;
int count = 0;
int _count = 0;
// 랭킹 초기화
for (i = 0; i < 10; i++) {
sd[i].ranking = 1;
sd[i].count = 0;
}

// 성적입력
for (i = 0; i < 10; i++) {
printf("학생 %d의 국어성적을 입력하십시오 : ", i);
scanf("%d", &sd[i].KoreanScore);
printf("학생 %d의 영어성적을 입력하십시오 : ", i);
scanf("%d", &sd[i].EnglighScore);
printf("학생 %d의 수학성적을 입력하십시오 : ", i);
scanf("%d", &sd[i].MathScore);

// 총합 평균 계산후 출력
sd[i].sum = sd[i].KoreanScore + sd[i].EnglighScore + sd[i].MathScore;
sd[i].average = sd[i].sum / 3;
printf("학생 %d 총합 %d 평균 %f\n\n", i, sd[i].sum, sd[i].average);
}

// 랭킹계산
for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {
if (sd[i].sum < sd[j].sum) {
++sd[i].ranking;
}
else if (sd[i].sum == sd[j].sum) {
++sd[i].count;
}
}
}

// 석차순으로 총합 평균 랭킹 출력

for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {

if (sd[j].ranking == i) {

for (k = 0; k < 10; k++) {
for (q = 0; q < 10; q++) {
if (sd[q].ranking == sd[k].ranking&&sd[q].sum !=sd[k].sum)
if(sd[q].sum > sd[k].sum)
{
++sd[q].ranking;
}
else
{
++sd[k].ranking;
}
}
}

sd[j].ranking -= _count;
++sd[j].ranking;
printf("학생 %d 총합 %d 평균 %f 순위 %d\n", j, sd[j].sum, sd[j].average,
sd[j].ranking);
count = 0;
}
else {
count++;
}

if (count == 11) {
_count++;
count = 0;
}

}
}

system("pause");

return 0;
}
/* 이상하개 sd[0].raking 값과 sd.[9].ranking 값이 1정도 오차가 나는 경우가 있습니다.
어떻게든 처리하고 싶은대 자꾸 코드만 꼬이내요 ㄷ;;;*/
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호