1 00:00:00,000 --> 00:00:00,994 2 00:00:00,994 --> 00:00:11,431 >> [Muusika mängib] 3 00:00:11,431 --> 00:00:12,500 >> ROB BOWDEN: Hi. 4 00:00:12,500 --> 00:00:13,230 Olen Rob. 5 00:00:13,230 --> 00:00:15,080 Ja olgem ahneks. 6 00:00:15,080 --> 00:00:18,560 >> Nii et esimene asi, mida me peame tegema, on paluda kasutajal täpselt, kuidas 7 00:00:18,560 --> 00:00:20,500 palju muutusi on ees. 8 00:00:20,500 --> 00:00:23,310 Nii et siin me näeme meil do / samas silmus. 9 00:00:23,310 --> 00:00:26,650 Ja me seame dollarit võrdne GetFloat. 10 00:00:26,650 --> 00:00:27,890 Mis on GetFloat? 11 00:00:27,890 --> 00:00:30,700 See on üks funktsioone CS50 raamatukogu, mis saab 12 00:00:30,700 --> 00:00:32,450 float kasutaja. 13 00:00:32,450 --> 00:00:35,200 Pea meeles, et kasutada seda funktsiooni, peame hash hulka 14 00:00:35,200 --> 00:00:37,790 CS50.h ülaosas. 15 00:00:37,790 --> 00:00:42,310 >> Nii et kui meil on see väärtus kasutaja, peame olema kindlad, et 16 00:00:42,310 --> 00:00:43,560 see on kehtiv väärtus. 17 00:00:43,560 --> 00:00:46,050 Me ei saa võlgu negatiivne raha. 18 00:00:46,050 --> 00:00:48,460 Ja nii see ongi eesmärk Selle do / samas silmus. 19 00:00:48,460 --> 00:00:52,420 Jätkame silmukoiminen samas dollarit on väiksem kui null. 20 00:00:52,420 --> 00:00:56,960 Ja do / kui silmus on õige asi kasutada siin, sest meil on vaja küsida 21 00:00:56,960 --> 00:01:00,290 alla vähemalt üks kord, kui palju raha võlgneb. 22 00:01:00,290 --> 00:01:05,040 >> Nii et kui meil on see number dollareid, näeme siin meil int senti 23 00:01:05,040 --> 00:01:08,630 võrdub ringi dollari korda CENTS_PER_DOLLAR. 24 00:01:08,630 --> 00:01:10,740 Tipus, siis näeme, et CENTS_PER_DOLLAR on 25 00:01:10,740 --> 00:01:13,750 mõistlikult määratletud kui 100. 26 00:01:13,750 --> 00:01:16,270 Mis siis on see joon teed? 27 00:01:16,270 --> 00:01:21,200 >> Noh, kui sa mäletad, ujukoma väärtused ei ole päris täpne. 28 00:01:21,200 --> 00:01:25,470 Erinevalt täisarvud, ei saa me esindame ujukoma väärtuste täpselt. 29 00:01:25,470 --> 00:01:28,660 Alati on mingi ebatäpsust. 30 00:01:28,660 --> 00:01:32,840 Nii et me eelistavad töötada ainult täisarvud kogu selle probleemi. 31 00:01:32,840 --> 00:01:42,690 Ja siin, kui kasutaja sisestas $ 3,42, me muutma seda, et 342 senti ja 32 00:01:42,690 --> 00:01:45,900 Ümardamise lihtsalt vabaneda ükskõik mis ebatäpsus. 33 00:01:45,900 --> 00:01:49,940 >> Nii et kui meil on mitu senti täisarv, saame jätkata 34 00:01:49,940 --> 00:01:51,730 ülejäänud programmi. 35 00:01:51,730 --> 00:01:55,910 Me näeme siin, et me kuulutab täisarv mündid, mis me oleme ainult kasutada 36 00:01:55,910 --> 00:01:59,560 jälgida kogu müntide arvu. 37 00:01:59,560 --> 00:02:01,590 Siin on meie esimene samas silmus. 38 00:02:01,590 --> 00:02:06,780 >> Me näeme samas senti on suurem või võrdne kvartalis, mille üle on hash 39 00:02:06,780 --> 00:02:14,680 defineeritud 25, samas on tõsi, me tahan juurdekasvu meie münti 40 00:02:14,680 --> 00:02:18,350 ja aland senti kvartalisse. 41 00:02:18,350 --> 00:02:22,810 Pea meeles, et see süntaks võrdub senti 42 00:02:22,810 --> 00:02:26,020 võrdub senti miinus kvartalis. 43 00:02:26,020 --> 00:02:28,170 Need on samad. 44 00:02:28,170 --> 00:02:31,850 >> Mis siis on see samas loop teed? 45 00:02:31,850 --> 00:02:39,260 Idee on selles, et kui ma tean, et $ 3,42 võlgneb, ma ei saa jätkuvalt anda 46 00:02:39,260 --> 00:02:42,670 kvartalites kuni ma ei saa anda kvartalites enam. 47 00:02:42,670 --> 00:02:47,720 Ma ei saa anda kvartalites enam, kui ma olen andnud $ 3,25. 48 00:02:47,720 --> 00:02:53,300 >> Niisiis, kui see on nii, siis tulen murda läbi selle samas silmus. 49 00:02:53,300 --> 00:02:57,650 Senti jäetakse kell 17 senti. 50 00:02:57,650 --> 00:03:01,910 Ja me jätkame kuni järgmise samas loop, kus me ütleme, kui senti 51 00:03:01,910 --> 00:03:04,270 on suurem või võrdne dime. 52 00:03:04,270 --> 00:03:07,420 >> Ja nüüd me teeme täpselt sama asi, mida me tegime kvartalis juhul 53 00:03:07,420 --> 00:03:09,010 välja arvatud pakikesed. 54 00:03:09,010 --> 00:03:15,050 Nii $ 0,17, paneme sellele loop kuni suudame enam ei anna peenraha, mis on 55 00:03:15,050 --> 00:03:16,680 täpselt üks kord. 56 00:03:16,680 --> 00:03:20,470 Ja siis me ei jää 7 senti. 57 00:03:20,470 --> 00:03:24,730 >> Siis me jätkake viiesendist, mis silmus, kuni me ei saa anda 58 00:03:24,730 --> 00:03:29,420 enam viiesendist, mis jätke meile kaks senti. 59 00:03:29,420 --> 00:03:34,400 Ja siis alla allservas on meil penni, mis silmuse ja tahe 60 00:03:34,400 --> 00:03:37,140 Lõpuks jätab meile null senti. 61 00:03:37,140 --> 00:03:41,670 Siis lõpuks, me lihtsalt vaja välja printida meie münti. 62 00:03:41,670 --> 00:03:44,980 >> Nii, et see programm on täiesti õige. 63 00:03:44,980 --> 00:03:47,310 Aga me ei saa tegelikult teha natuke parem. 64 00:03:47,310 --> 00:03:52,660 Nüüd, kui ma ütlen, et ma olen sulle võlgu $ 10.000, sa ei pea minema siin on üks 65 00:03:52,660 --> 00:03:55,310 kvartalis, kaks kvartalit, kolmveerand. 66 00:03:55,310 --> 00:03:59,450 Sa peaksid kohe teada, et Ma võlgnen sulle 40000 kvartalit. 67 00:03:59,450 --> 00:04:04,070 >> Nüüd vaatame programmi, mis käepidemed on veidi parem. 68 00:04:04,070 --> 00:04:07,190 Selles versioonis asju, meil on vaja veel paluda kasutajal summa 69 00:04:07,190 --> 00:04:10,930 muuta, et nad tahavad täpselt samamoodi me tegime enne. 70 00:04:10,930 --> 00:04:14,110 Meil on vaja ümardada see täpselt kuidas me tegime enne. 71 00:04:14,110 --> 00:04:17,910 Ja meil on veel meie mündid täisarv deklareeritud täpselt sama nagu enne. 72 00:04:17,910 --> 00:04:21,399 >> Nii et siin on koht, kus asjad natuke erinev. 73 00:04:21,399 --> 00:04:24,640 Me teeme mündid pluss võrdsete senti jagatud kvartalis 74 00:04:24,640 --> 00:04:27,140 kus kvartali 25. 75 00:04:27,140 --> 00:04:31,790 Mida see ütleb on, võta nii palju kvartalites ei lähe senti ja lisada 76 00:04:31,790 --> 00:04:33,030 et münte. 77 00:04:33,030 --> 00:04:40,100 >> Nii et kui senti on 142, 142 jagatud 25 annab meile 5. 78 00:04:40,100 --> 00:04:43,950 Pea meeles, et täisarv rajoon kärbib automaatselt. 79 00:04:43,950 --> 00:04:46,870 Nii me teeme mündid pluss võrdub 5. 80 00:04:46,870 --> 00:04:51,850 >> Kohe pärast seda, me ütleme, senti võrdne senti mod kvartalis. 81 00:04:51,850 --> 00:04:57,150 Pea meeles, et mod operaator annab meile jagamise jäägi. 82 00:04:57,150 --> 00:05:05,840 Nii 142 mod kvartalis, mis annab 142 miinus 125, mis on 17. 83 00:05:05,840 --> 00:05:10,470 See on jäänud pärast teeme 142 jagatud 25. 84 00:05:10,470 --> 00:05:13,040 >> Nüüd senti võrdub 17. 85 00:05:13,040 --> 00:05:16,080 Ja me teeme täpselt sama asi pakikesed. 86 00:05:16,080 --> 00:05:18,620 17 jagatud 10 annab meile 1. 87 00:05:18,620 --> 00:05:20,150 Ja me lisada, et münte. 88 00:05:20,150 --> 00:05:25,380 Ja siis me uuendada senti olema 17 mod 10, mis on 7. 89 00:05:25,380 --> 00:05:27,200 >> Ja siis sama viiesendist. 90 00:05:27,200 --> 00:05:29,180 7 jagatud 5 on 1. 91 00:05:29,180 --> 00:05:30,880 Lisada, et münte. 92 00:05:30,880 --> 00:05:34,600 Ja siis 7 mod 5 on 2. 93 00:05:34,600 --> 00:05:35,910 Ja see on meie senti. 94 00:05:35,910 --> 00:05:39,065 >> Ja siis, penne, ei ole reaalne mõtet jagamine või modereerimine, sest 95 00:05:39,065 --> 00:05:42,170 kui meil on 0,2 $ jäänud, saame lihtsalt kohe lisada, et 96 00:05:42,170 --> 00:05:43,590 meie münti. 97 00:05:43,590 --> 00:05:48,210 Ja lõpuks on meil vaja välja printida meie müntide arvu ja valikuliselt 98 00:05:48,210 --> 00:05:52,100 tagasi 0 lõpus meie programm tähendama kõik töötas. 99 00:05:52,100 --> 00:05:53,120 >> Minu nimi on Rob. 100 00:05:53,120 --> 00:05:54,020 Ja see oli ahne. 101 00:05:54,020 --> 00:05:57,620 >> [Muusika mängib] 102 00:05:57,620 --> 00:06:01,515