|
quicksort(score[100],0,count); 이라는 호출은 quicksort(score+100,0,count); 과 같습니다.
즉, score배열의 101번째 요소의 주소부터 count만큼 작업하라는 뜻입니다.
다음과 같이 100번을 호출해 주어야 합니다.
for ( int i = 0 ; i < 100 ; i++)
{
count = 입력;
quicksort(score[i], 0, count);
}
후아..;;; 님이 쓰신 글 :
: #include<stdio.h>
: void quicksort(int score[],int first,int last)
: {
: int i,j,x,t;
: x=score[first+last/2];
: i=first;
: j=last;
: for( ; ; ){
: while (score[i]<x) i++;
: while (x<score[j]) j--;
: if (i>=j) break;
: t=score[i]; score[i]=score[j]; score[j]=t;
: i++;j--;
: }
: if (first<i-1)quicksort(score,first,i-1);
: if (i+1<last)quicksort(score,j+1,last);
: }
:
: 위에가 퀵 소팅의 함수부분을 만든 것인데
: 문제는 이게 2중배열이라는 것에 있습니다.
: 배열의 선언은 score[100][9]; 로서 100명의 9가지 항목에 대하여 받는 것인데
: 사람의 숫자는 입력이 종료 될때 까지니 항상 100명이 아니라서
: 그 숫자는 count변수를 선언하여 count에 저장 시켰습니다.
: 메인에서 함수를 호출할때
: quicksort(score[],0,count); 이렇게 하면 워닝이 2개가 뜨더라구요
: score[] []안쪽에 숫자 몇개를 집어넣어서 확인 해 봤더니 []안의 숫자만큼
: 출력이 제대로 나오고 그 아래는 엉망으로 나오더군요
: 최대 100명을 출력해야 하니 score[100]으로 하여
: quicksort(score[100],0,count); 이렇게 했습니다.
: 에러도 없고 워닝도 없더라구요 그런데 사람이 적을 때는 출력하더니
: 한 13명 그 이상의 데이터를 받으니
: 출력이 되지 않고 바로 프로그램 자체가 종료가 되어버립니다.
: (출력문은 메인 안에 있습니다.)
:
: 같은 소스의 소팅만 버블로 한 것은 잘 돌아갑니다.
:
: 어떻게 해야 하나요? 고수님들 가르쳐 주세요 ㅡㅜ
: 제가 사용하는 프로그램은 비쥬얼 C++이고 C++이 아닌 C언어로만 가르쳐 주시면
: 감사하겠습니다.
|