1 00:00:00,000 --> 00:00:00,994 2 00:00:00,994 --> 00:00:11,431 >> [MUSIC SPIEL] 3 00:00:11,431 --> 00:00:12,500 >> ROB BOWDEN: Hallo. 4 00:00:12,500 --> 00:00:13,230 Ich bin Rob. 5 00:00:13,230 --> 00:00:15,080 Und lassen Sie uns Greedy. 6 00:00:15,080 --> 00:00:18,560 >> Das erste, was wir tun müssen, wird der Benutzer genau, wie Fragen 7 00:00:18,560 --> 00:00:20,500 viel Veränderung geschuldet ist. 8 00:00:20,500 --> 00:00:23,310 So, hier sehen wir, wir haben a do / while-Schleife. 9 00:00:23,310 --> 00:00:26,650 Und wir Einstellung Dollar gleich GetFloat. 10 00:00:26,650 --> 00:00:27,890 Was ist GetFloat? 11 00:00:27,890 --> 00:00:30,700 Es ist eine der Funktionen in der CS50-Bibliothek, die eine bekommt 12 00:00:30,700 --> 00:00:32,450 Schwimmer von dem Benutzer. 13 00:00:32,450 --> 00:00:35,200 Erinnern Sie sich, um diese Funktion zu nutzen, wir brauchen, um Hash enthalten 14 00:00:35,200 --> 00:00:37,790 CS50.h an der Spitze. 15 00:00:37,790 --> 00:00:42,310 >> Also noch haben wir diesen Wert aus der Benutzer, müssen wir auch sicher sein, dass 16 00:00:42,310 --> 00:00:43,560 es ist ein gültiger Wert. 17 00:00:43,560 --> 00:00:46,050 Wir können negativ Geld schulde. 18 00:00:46,050 --> 00:00:48,460 Und damit ist der Zweck dieser do / while-Schleife. 19 00:00:48,460 --> 00:00:52,420 Wir sind weiterhin Schleife während Dollar kleiner als Null ist. 20 00:00:52,420 --> 00:00:56,960 Und eine do / while-Schleife ist das Richtige hier benutzen, da wir stellen müssen, die 21 00:00:56,960 --> 00:01:00,290 Benutzer mindestens einmal, wie viel Geld geschuldet. 22 00:01:00,290 --> 00:01:05,040 >> Also, wenn wir diese Zahl der Dollar, wir hier sehen, haben wir int Cent 23 00:01:05,040 --> 00:01:08,630 Runde gleich mal Dollar CENTS_PER_DOLLAR. 24 00:01:08,630 --> 00:01:10,740 An der Spitze sehen wir, dass CENTS_PER_DOLLAR ist 25 00:01:10,740 --> 00:01:13,750 vernünftig als 100 definiert. 26 00:01:13,750 --> 00:01:16,270 Also, was ist diese Linie zu tun? 27 00:01:16,270 --> 00:01:21,200 >> Nun, wenn Sie sich erinnern, Floating-Point- Werte sind nicht ganz präzise. 28 00:01:21,200 --> 00:01:25,470 Anders als ganze Zahlen, die wir nicht darstellen kann Fließkommawerte genau. 29 00:01:25,470 --> 00:01:28,660 Es gibt immer eine Art Ungenauigkeit. 30 00:01:28,660 --> 00:01:32,840 Wir lieber nur mit ganzen Zahlen arbeiten während dieses Problem. 31 00:01:32,840 --> 00:01:42,690 Und wenn der Benutzer eingesetzt $ 3.42 wir, dass die Umwandlung auf 342 Cent und 32 00:01:42,690 --> 00:01:45,900 Runden, nur loswerden jede dieser Ungenauigkeit. 33 00:01:45,900 --> 00:01:49,940 >> Also, wenn wir die Anzahl der in Cent eine ganze Zahl, können wir mit der weiter 34 00:01:49,940 --> 00:01:51,730 Rest des Programms. 35 00:01:51,730 --> 00:01:55,910 Wir sehen hier, dass wir erklären, integer Münzen, die wir nur zu benutzen 36 00:01:55,910 --> 00:01:59,560 den Überblick über die Gesamt halten Anzahl der Münzen. 37 00:01:59,560 --> 00:02:01,590 Hier haben wir unsere erste while-Schleife. 38 00:02:01,590 --> 00:02:06,780 >> Wir sehen, während Cent größer oder gleich Quartal, das oben, ist Hash 39 00:02:06,780 --> 00:02:14,680 definiert als 25, während das wahr ist, wir wollen unsere Anzahl von Münzen zu erhöhen 40 00:02:14,680 --> 00:02:18,350 und Abnahme Cent pro Quartal. 41 00:02:18,350 --> 00:02:22,810 Denken Sie daran, dass diese Syntax entspricht Cent 42 00:02:22,810 --> 00:02:26,020 gleich Cent minus Quartal. 43 00:02:26,020 --> 00:02:28,170 Dies sind die gleichen. 44 00:02:28,170 --> 00:02:31,850 >> Also, was ist diese while-Schleife zu tun? 45 00:02:31,850 --> 00:02:39,260 Die Idee hier ist, dass, wenn ich weiß, 3,42 $ geschuldet ist, kann ich auch weiterhin geben 46 00:02:39,260 --> 00:02:42,670 Viertel, bis ich nicht geben kann Viertel mehr. 47 00:02:42,670 --> 00:02:47,720 Kann ich nicht geben Quartale nicht mehr, sobald ich 3,25 $ angegeben. 48 00:02:47,720 --> 00:02:53,300 >> Also dann, sobald das der Fall ist, werden wir brechen aus dieser while-Schleife. 49 00:02:53,300 --> 00:02:57,650 Cent wird bei 17 Cent bleiben. 50 00:02:57,650 --> 00:03:01,910 Und wir werden an die nächste weiter while-Schleife, wo wir sagen, während Cent 51 00:03:01,910 --> 00:03:04,270 größer als oder gleich Cent. 52 00:03:04,270 --> 00:03:07,420 >> Und jetzt sind wir dabei exakt das gleiche was haben wir in diesem Quartal Fall 53 00:03:07,420 --> 00:03:09,010 außer mit Groschen. 54 00:03:09,010 --> 00:03:15,050 Also mit 0,17 $, werden wir Schleife, bis wir können einen Cent, das ist nicht mehr zu geben 55 00:03:15,050 --> 00:03:16,680 genau einmal. 56 00:03:16,680 --> 00:03:20,470 Und dann werden wir mit 7 Cent gelassen werden. 57 00:03:20,470 --> 00:03:24,730 >> Dann werden wir weiter nach Nickels, die wird Schleife, bis wir nicht geben kann 58 00:03:24,730 --> 00:03:29,420 noch mehr Nickels, was wird Lassen Sie uns mit zwei Cent. 59 00:03:29,420 --> 00:03:34,400 Und dann, unten am Boden, haben wir Pfennige, die in einer Schleife und wird 60 00:03:34,400 --> 00:03:37,140 schließlich lassen uns mit Null-Cent. 61 00:03:37,140 --> 00:03:41,670 Dann am Ende, wir müssen nur drucken Sie unsere Anzahl von Münzen. 62 00:03:41,670 --> 00:03:44,980 >> Also das Programm ist vollkommen richtig. 63 00:03:44,980 --> 00:03:47,310 Aber wir können tatsächlich etwas besser. 64 00:03:47,310 --> 00:03:52,660 Nun, wenn ich sage, dass ich Ihnen schulde $ 10.000, Sie sollten nicht gehen müssen, hier ist eine 65 00:03:52,660 --> 00:03:55,310 Viertel, zwei Viertel, drei Viertel. 66 00:03:55,310 --> 00:03:59,450 Sie sollten sofort wissen, dass Ich schulde Ihnen 40.000 Quartale. 67 00:03:59,450 --> 00:04:04,070 >> Jetzt schauen wir uns an einem Programm, das wickelt es ein bisschen besser. 68 00:04:04,070 --> 00:04:07,190 In dieser Version der Dinge müssen wir immer noch den Benutzer nach der Menge der Fragen 69 00:04:07,190 --> 00:04:10,930 verändern, dass sie in genau wollen die gleiche Art, wie wir zuvor. 70 00:04:10,930 --> 00:04:14,110 Wir müssen es genau runden die Art und Weise haben wir vor. 71 00:04:14,110 --> 00:04:17,910 Und wir haben noch unsere Münzen ganzzahlige genau erklärt die gleiche wie zuvor. 72 00:04:17,910 --> 00:04:21,399 >> Also hier ist, wo die Dinge ein bisschen anders. 73 00:04:21,399 --> 00:04:24,640 Wir tun Münzen und equals Cent geteilt durch Quartal 74 00:04:24,640 --> 00:04:27,140 wo Quartal 25. 75 00:04:27,140 --> 00:04:31,790 Was dies sagt, ist, nehmen Sie so viele Viertel wie in Cent und fügen 76 00:04:31,790 --> 00:04:33,030 dass auf Münzen. 77 00:04:33,030 --> 00:04:40,100 >> Also, wenn Cent beträgt 142, 142 geteilt 25 gibt uns fünf. 78 00:04:40,100 --> 00:04:43,950 Beachten Sie, dass Integer-Division automatisch abgeschnitten. 79 00:04:43,950 --> 00:04:46,870 Also werden wir tun, Münzen und gleich 5. 80 00:04:46,870 --> 00:04:51,850 >> Unmittelbar danach werden wir sagen, Cent gleich Cent mod Quartal. 81 00:04:51,850 --> 00:04:57,150 Denken Sie daran, dass der Mod-Operator gibt uns der Rest nach der Teilung. 82 00:04:57,150 --> 00:05:05,840 Also 142 mod Quartal, das wird ist 142 minus 125, die 17 ist. 83 00:05:05,840 --> 00:05:10,470 Das ist der Rest nach Dabei 142 geteilt durch 25. 84 00:05:10,470 --> 00:05:13,040 >> So, jetzt ist Cent gleich 17. 85 00:05:13,040 --> 00:05:16,080 Und wir tun exakt das gleiche Sache für Groschen. 86 00:05:16,080 --> 00:05:18,620 17 geteilt durch 10 wird uns ein. 87 00:05:18,620 --> 00:05:20,150 Und wir fügen hinzu, dass auf Münzen. 88 00:05:20,150 --> 00:05:25,380 Und dann haben wir Cent zu aktualisieren, um sein 17 mod 10, die 7 ist. 89 00:05:25,380 --> 00:05:27,200 >> Und dann die gleiche für Nickel. 90 00:05:27,200 --> 00:05:29,180 7 geteilt durch 5 gleich 1 ist. 91 00:05:29,180 --> 00:05:30,880 Hinzufügen, dass Münzen. 92 00:05:30,880 --> 00:05:34,600 Und dann 7 mod 5 2 ist. 93 00:05:34,600 --> 00:05:35,910 Und das ist unser Cent. 94 00:05:35,910 --> 00:05:39,065 >> Und dann, für ein paar Cent, gibt es keinen wirklichen Punkt in Trenn oder Modding, da, 95 00:05:39,065 --> 00:05:42,170 wenn wir 0,2 $ übrig, wir können nur sofort hinzufügen, dass 96 00:05:42,170 --> 00:05:43,590 unsere Anzahl von Münzen. 97 00:05:43,590 --> 00:05:48,210 Und schließlich müssen wir unsere ausdrucken Anzahl von Münzen, und gegebenenfalls 98 00:05:48,210 --> 00:05:52,100 return 0 am Ende unseres Programms alles bedeuten gearbeitet. 99 00:05:52,100 --> 00:05:53,120 >> Mein Name ist Rob. 100 00:05:53,120 --> 00:05:54,020 Und das war gierig. 101 00:05:54,020 --> 00:05:57,620 >> [MUSIC SPIEL] 102 00:05:57,620 --> 00:06:01,515