이진트리로 순위결정하는 건데요~~(후위 순회!!) 급합니다고수님들 부탁드려요 ㅠㅠ
예다움
// 순위보기 페이지에서 순위 계산하는 함수
void Main_Screen_Rank_Sub(Score *r, int n)// n = 과목 수
{
Score st;// Score *st로 할 필요가 있을까...
double aver = 0;// 점수 평균(100분위)
int i;
for(i=0; i2; i++)
aver += r-score[i];// aver에 현재 노드학생의 모든과목 점수를 더한다
aver = aver/2;// aver을 과목수로 나눈다
// 13위부터는 오류뜬다 이유모름(12명까지만 일단) ★// 일단 count 변수가 문제..전역변수라서..
if(r != NULL)
{
Main_Screen_Rank_Sub(r-right, n);
count++;
gotoxy(20, count+7); printf(%2d위. %2d %s\t%lf\n, count, r-s_num, r-name, aver);
Main_Screen_Rank_Sub(r-left, n);
}
}순위를 결정하기위한 함수인데요
여기서 빨간색부분이 뭔가 문제가 있는것 같아요
실행하면 Main_Screen_Rank_Sub(r-right, n)부분 아래부분까지
실행이안되요 위에서 뭔가 오류가뜨면서 중간에 멈추네요..정확히말하면 !! 오른쪽끝까지 갈떄까지는Main_Screen_Rank_Sub(r-right, n) 이부분을 실행을 해요~
그리고 마지막호출에서 if(r != NULL)에서 오류가 생기는 듯 하네요~~
5
3 8
6 10
13
이면 8, 10, 13 까지는 가고 13의 하위가 NULL이므로 그부분에서 오류가 나는것 같아요.. 자연스럽게
count++;
gotoxy(20, count+7); printf(%2d위. %2d %s\t%lf\n, count, r-s_num, r-name, aver);
Main_Screen_Rank_Sub(r-left, n); 이부분은 실행도못하게되구요....
제 문제가 무었인지 이해 가시나요... 부탁드립니다 고수님들 ㅠㅠ
하루종일 이것만 보고있네요..
-
악당
if(r-right != NULL && r-left != NULL)
항상 자식(R,L둘다)이 있다는 전제하에 작동하는 코드인것 같은데 그부분은 수정을 좀 하실필요가 있을 것 같습니다