2012-02-27 2 views
0

현재 문자열을 영문자 순화하는 프로그램을 작성하려고합니다. 하나의 오류가 있습니다. minLocation은 2 개의 인수를 취하지 않습니다. 프로그래밍에 상당히 익숙하지 않아서 코드의이 부분이 잘못된 이유에 대한 힌트를 누군가에게 줄 수 있습니까? minLocation의 정의를 보지 않고정렬 프로그램의 오류 코드

void Sort(string slist[],int length) 
{ 
    int mIndex; 

     for (int loc = 0; loc < length-1; loc++) 
     { 
      mIndex = minLocation (loc,length-1); 
      swap (loc, minIndex); 
     } 
} 
+1

자바처럼 보입니다. 언어로 태그를 지정하고 'minLocation'이 무엇인지 알려주실 수 있습니까? 당신이 직접 쓴 방법이나 도서관의 일부입니까? 어느 쪽이든, 오류는 'minLocation'을 부적절하게 호출하는 것입니다. 함수 서명이 제대로 호출되어야하는지 확인하십시오. –

답변

1

int minLocation(string list[], int first, int last) 
{ 
    int mIndex=first; 
    int loc = 0; 

    for (loc = first+1; loc <= last; loc++) 
     if (list[loc] < list [mIndex]) 
      mIndex = loc; 
    return mIndex; 

, 우리는 말할 수 없다. 그러나 컴파일러가 재미를 위해서 단지 거짓말을하지 않는다면, 보통 말하고있는 것이 사실이라고 가정 할 수 있습니다 :-)

같은 정의, 뭔가 찾을 :

int minLocation (int loc) { ... 

을하고 실제로이 그것을 호출하는 의미가있어 방법을 알아낼. 두 개의 인덱스 중 더 낮은 값을 가진 인덱스를 찾는 것처럼 보이면 이 더 많을 수도 있고 두 개의 인수보다이 필요할 수도 있습니다.

그리고 그 위에 mIndex 또는 minIndex이라는 변수를 지정할지 결정해야합니다. 대부분의 컴파일러는 당신을 위해 그것을 이해할만큼 똑똑하지 않습니다. 그것은 또한 문자열 배열뿐만 아니라 두 개의 인덱스를 필요로

int minLocation (string list[], int first, int last) { ... 

이 분명한 것 같다 편집을 바탕으로

muinFunction는 다음과 같이 정의된다. 뿐만 아니라 swap 전화에 눈을

mIndex = minLocation (slist, loc, length-1); 

그리고 유지 : 당신에 전화를 변경해야합니다. 도 코딩 스타일에 따라 비슷한 요구 사항을 가지고 있습니다.

+0

minindex와 minlocation이 밤 늦게까지 희미 해져서 변경했습니다. –

+0

그러나 오류가 수정 된 후에도 수정되었습니다. –

+0

@OurFamilyPage, 당신은 * 2 *를 가진 * 3 * 인자를 기대하는'minLocation()'함수를 호출하고 있습니다. 문자열의 배열을 빠뜨린 것입니다. 이거 고쳤어? – Nim