2017-11-06 3 views
0

Ich bin sehr neu in der Programmierung und habe einige Schwierigkeiten zu verstehen, wie while Schleifen in Verbindung miteinander verwendet werden können.Verschachteln mehrerer While-Schleifen - CS50 greedy.c less

Sie können von meinem Code sehen, dass ich die Münzenzahl zu erhöhen bekommen, aber ich fühle, dass while Schleifen do-while Schleifen im Gegensatz verwendet werden sollen, um die Änderung Gesamt Zeile für Zeile rückwärts zu zählen.

Vielleicht mache ich es komplizierter als erforderlich, aber sind mehrere while Schleifen der beste Weg, um den Änderungswert herunterzuzählen?

Alle Hinweise oder Tipps sehr dankbar, danke!

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

dies ist Münzwechsel Problem ... Sie sollten wirklich Ihre TA für Ihre Kursarbeit Probleme besuchen ... – HuStmpHrrr

+0

Nehmen Sie diese Klasse auf EdX? Wenn ja, hast du ihr Forum ausprobiert? Ich denke, wenn Sie die größtmöglichen Münzen verwenden möchten, würden Sie durchschleifen und Viertel entfernen, bis Sie weniger als 25 Cent übrig hatten, usw. Ohne eine Schleife zu verwenden, sieht es so aus, als würden Sie nur eine von jeder Münze entfernen. –

Antwort

0

Eine While-Schleife funktioniert gut. Sie werden es mehr als 0 machen wollen, anstatt weniger oder gleich, wie Sie gerade haben, müssen Sie auch nicht viertel/Groschen definieren, und all das können Sie verwenden, wenn Sie Anweisungen wie if (Cents übrig ist mehr als Münzwert) als Münzen - = (dies ist der Weg, um jedes Mal zu verringern, wenn es rüberkommt) Wert, den Sie subtrahieren. Versuchen Sie, diese Änderungen vorzunehmen, und ich kann Ihnen mehr von dort helfen

+0

Dank @Joel Banks, schätze die Hilfe. Ich setze jetzt Ihren Vorschlag um und werde mein Ergebnis wiederholen. – Gus

+0

Verzeihen Sie meine Formatierung wenn falsch, noch lernen. einige Änderungen implementiert, scheint alles richtig zu funktionieren, wenn ich testen, aber check50 kommt zurück mit: ':) gierig :) gierig compiles existiert :(Eingabe von 0,41 Ausbeuten Leistung von 4 nicht tat find "4 \ n" :) Eingabe von 0,01 ergibt Ausgabe von 1 :(Eingabe von 0,15 ergibt Ausgabe von 2 erwartet "2 \ n", nicht "15 \ n32767 \ n" :(Eingabe von 1,6 ergibt Ausgabe von 7 nicht gefunden "7 \ n" :(Eingabe von 23 ergibt Ausgabe von 92 nicht gefunden "92 \ n" :(Eingabe von 4.2 ergibt Ausgabe von 18 Zeitüberschreitung, während für das Programm wartet auf exit' – Gus

+0

Neuer Code: [link] (https://gist.github.com/mgf82/5986fc29c4c36051ca252d623dbf661d) – Gus