2011-11-24 3 views
2

가족의 게스트 목록을 정렬하는 프로그램을 작성 중이며 한 부분을 제외하고는 모두 잘 작동합니다. 각 가족에게 우선 순위 번호와 함께 파티에 참석할 가족의 수를 알려줍니다. 그러나 우선 순위 수준의 일부 패밀리 만 초대 할 수 있고 모든 패밀리가 아닌 다른 패밀리 만 초대 할 수있는 경우 전체 우선 순위 수준을 건너 뛰고 손님 목록이 즉시 채워지지 않습니다. 나는 여기에 로직을 넣으려고하는데 약간의 문제가있다. 파티에 참석 한 7 가정의루프를 만드는 데 문제가 있습니다.

Check_Capacity(int FAMILIES_KNOWN, int CAPACITY, int Family_Members[], int Priority[]) 
{ 
    int i, num_families = 0, num_guests = 0, count = 0; 

    for(i = 0; i < FAMILIES_KNOWN; i++) 
    { 
     count++; 

     while(Priority[i] == count) 
     { 
      num_guests += Family_Members[i]; 

      if(num_guests <= CAPACITY) 
      { 
       num_families++; 
      } 

      else 
      { 
       break; 
      } 
     } 
    } 
    return num_families; 
} 

이 코드 결과, 24 개 가족 :

다음은 그 기능에 대한 내 코드입니다. 그것은 8 가족과 26 가족이 있어야하지만. 나는 프로그램을 끝냈다 고 생각했기 때문에 흥분했지만 선생님은 우선 순위 수준이 "전체"로 취급되는지 확인해야한다는 사실을 추가했습니다. 이 경우

는 FAMILIES_KNOWN 10이고 CAPACITY 여기 30 인 고객 목록이다 :

BEN JOHNSON 4 2 
DOUG ESPINOSA 3 2 
SARAH TELLINGER 5 3 
GRANT THOMPSON 5 2 
JENNIFER WEST 7 6 
JACKSON JOHNSON 1 5 
MARTY MCFLY 4 1 
ELIZABETH JAMES 2 6 
MICKEY MOUSE 2 4 
RAJ SHAH 2 5 

첫 번째 숫자는 가족 구성원의 수이고, 두 번째 숫자는 우선 순위이다. 목록을 우선 순위에 따라 이미 정렬했다고 가정합니다. 누구든지 아이디어가 있습니까? 내가 무엇을하려고하는지 이해하지 못한다면 나는 더 깊이 설명 할 수있다.

+1

'i N0ug4t

+0

아, 저는 그렇게 생각하지 않았습니다. 더 많은 테스트 케이스에서 작동하는지 알아보기 위해 트릭을 수행했습니다. –

+0

Nvm. 이전 버전의 파일을 열어 보았습니다. 속임수를 쓰지 마라 : P. –

답변

1

귀하의 문제는 단지 우선 순위에 따라 분류하면 이후 목록을 우선 순위 1의 첫 번째 가족 참가자를 추가 할 수 있도록 당신의 내면의 while 루프가 모두 당신이 증가 i에 할 필요가, 인덱스를 증가하지 않는다는 것입니다 귀하의 루프 for 루프가 아닌 while 루프가 필요합니다. for 루프에서 i의 증가를 방해 할 수 있으므로주의하십시오.

+0

Check_Capacity를 호출하기 전에 우선 순위를 정렬합니다. –

+0

이 경우,'while' 루프 안에서'i'를 증가시켜야합니다. 나는 나의 대답을 업데이트했다. – drdwilcox

+1

BTW에서는 안쪽의'if' 테스트 내부에있는 패밀리의 수를 늘리므로, 외부의 손님 수를 늘리면 항상 패밀리 수와 게스트 수간에 불일치가 생깁니다. 둘 다 또는 둘 다해야합니다. 그리고 그것은 당신이 좋은 닥터에게서 얻는 모든 힌트입니다. – drdwilcox

관련 문제