C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[46977] 2중 배열을 퀵 소팅 하기
후아..;;; [] 1251 읽음    2006-11-06 03:23
#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언어로만 가르쳐 주시면
감사하겠습니다.

+ -

관련 글 리스트
46977 2중 배열을 퀵 소팅 하기 후아..;;; 1251 2006/11/06
47003     Re:2중 배열을 퀵 소팅 하기 마술감자.명국진 1130 2006/11/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.