2017-11-06 2 views
0

프로그래밍과 새로운 루프를 함께 사용하는 방법을 이해하는 데 약간의 어려움이 있습니다.다중 중첩 루프 중첩 - CS50 greedy.c less

당신은 내가 동전의 개수가 증가 얻을 수 있습니다 내 코드에서 볼 수있는,하지만 난 라인으로 변경 전체 라인을 카운트 다운 do-while 루프에 반대 while 루프를 사용하는 것을 생각합니다.

아마 내가 필요 이상으로 복잡하게 만들고 있지만 복수형 while은 변경 값을 계산하는 가장 좋은 방법일까요?

감사의 말을 들어 주시면 감사하겠습니다.

int main(void) 
{ 
printf("O hai! "); 

float change; 

do 
{ 
    printf("How much change is owed?\n"); 
    change = get_float(); 
} 
while (change <= 0); 

int n = (change * 100);  // multiply change by 100 to get int in cents(n) 

int coin = 0;    // new int to represent amount of coins 


coin++; 
int quart = n - 25;  // subtract 25c from n 

coin++; 
int dime = quart - 10; // subtract 10c from quart 

coin++; 
int nick = dime - 5; // and so on 

coin++; 
int penny = nick - 1; // and so on 

penny = 0;    // and this is only here because I had an unused int (penny) 


printf("%i\n", coin); 
} 
+1

이것은 동전 변화 문제입니다 ... 귀하의 교과 과정 문제에 대해 귀하의 조공을 실제로 방문해야합니다 ... – HuStmpHrrr

+0

edX에서이 수업을 듣고 있습니까? 그렇다면 포럼을 사용해 보셨습니까? 나는 가능한 한 가장 큰 동전을 사용하고 싶습니다. 루프를 사용하지 않고 25 센트 이하가 될 때까지 쿼터를 계속 제거 할 것입니다. 루프를 사용하지 않고 각 동전 하나를 제거하는 것처럼 보입니다. –

답변

0

while 루프가 정상적으로 작동합니다. 0보다 작게 만들려고합니다. 현재 가지고있는 것과 같거나 작지 않고, quarter/dime을 정의 할 필요가 없습니다. if (센트가 남겨진 if 문을 사용할 수 있습니다. 동전 값보다 큽니다.) = = (이것은 매번 감소 할 수있는 방법입니다) 값을 빼는 것입니다. 이러한 변화를 시도하고 거기에서 더 많은 것을 도울 수 있습니다.

+0

감사합니다. @ Joeel Banks, 감사합니다. 지금 귀하의 제안을 이행하고 있으며 결과를 다시 게시 할 것입니다. – Gus

+0

여전히 잘못된 경우에도 서식을 용서하십시오. 내가 테스트 할 때 약간의 변화를 구현 은 모두 제대로 작동하는 것처럼 보이지만 check50 함께 다시오고있다 : ': 욕심이 존재 : 욕심 컴파일 0.41 수익률 출력의 :(입력 4 하지 않았다의 찾기 "4 \ n" :) 0.01의 출력은 1 의 출력을 산출합니다. (0.15의 입력은 의 결과를 산출하지만 "15 \ n32767 \ n"이 아닌 "2 \ n"의 결과를 산출합니다. 의 결과는 "7 \ n" 을 찾지 못했습니다 :(입력 23의 결과는의 결과는 "92 \ n" 을 찾지 못했습니다 : 4.2의 입력은 18 0의 출력을 산출합니다 exit'하는 프로그램을 기다리는 동안이 초과 – Gus

+0

새로운 코드 : [링크] (https://gist.github.com/mgf82/5986fc29c4c36051ca252d623dbf661d) – Gus