1 00:00:00,000 --> 00:00:00,994 2 00:00:00,994 --> 00:00:11,431 >> [Музички] 3 00:00:11,431 --> 00:00:12,500 >> Роб BOWDEN: Здраво. 4 00:00:12,500 --> 00:00:13,230 Јас сум Роб. 5 00:00:13,230 --> 00:00:15,080 И ајде да се алчни. 6 00:00:15,080 --> 00:00:18,560 >> Така првото нешто што треба да направите е да побара од корисникот точно како 7 00:00:18,560 --> 00:00:20,500 многу промени се должи. 8 00:00:20,500 --> 00:00:23,310 Па еве, гледаме дека имаме на не / а јамка. 9 00:00:23,310 --> 00:00:26,650 И ние сме поставување долари еднаква на GetFloat. 10 00:00:26,650 --> 00:00:27,890 Што е GetFloat? 11 00:00:27,890 --> 00:00:30,700 Тоа е една од функциите во CS50 библиотека која добива 12 00:00:30,700 --> 00:00:32,450 плови од корисникот. 13 00:00:32,450 --> 00:00:35,200 Запомни, со цел да ја користат таа функција, ние треба да хаш вклучуваат 14 00:00:35,200 --> 00:00:37,790 CS50.h на врвот. 15 00:00:37,790 --> 00:00:42,310 >> Па еднаш имаме таа вредност од корисникот, ние исто така треба да бидете сигурни дека 16 00:00:42,310 --> 00:00:43,560 тоа е валидна вредност. 17 00:00:43,560 --> 00:00:46,050 Ние не можеме да должам негативни пари. 18 00:00:46,050 --> 00:00:48,460 И така тоа е целта на овој do / а јамка. 19 00:00:48,460 --> 00:00:52,420 Продолжуваме looping додека долари е помала од нула. 20 00:00:52,420 --> 00:00:56,960 И на не / додека јамка е вистинската работа да се користи тука, бидејќи ние треба да побара од 21 00:00:56,960 --> 00:01:00,290 корисникот барем еднаш за тоа како колку пари се должи. 22 00:01:00,290 --> 00:01:05,040 >> Значи еднаш сме се дека бројот на долари, гледаме тука имаме int центи 23 00:01:05,040 --> 00:01:08,630 еднакво круг долари пати CENTS_PER_DOLLAR. 24 00:01:08,630 --> 00:01:10,740 На врвот, можеме да видиме дека CENTS_PER_DOLLAR е 25 00:01:10,740 --> 00:01:13,750 разумно дефинира како 100. 26 00:01:13,750 --> 00:01:16,270 Значи она што е оваа линија правиш? 27 00:01:16,270 --> 00:01:21,200 >> Па, ако се сеќавате, со подвижна запирка вредности не се сосема прецизни. 28 00:01:21,200 --> 00:01:25,470 За разлика од цели броеви, ние не може да претставува подвижна запирка вредности точно. 29 00:01:25,470 --> 00:01:28,660 Секогаш има некој вид на непрецизност. 30 00:01:28,660 --> 00:01:32,840 Па ние преферираат да работат со само цели броеви во текот на овој проблем. 31 00:01:32,840 --> 00:01:42,690 И тука, ако корисникот влезе 3,42 $, ние сме конвертирање дека до 342 центи и 32 00:01:42,690 --> 00:01:45,900 заокружување, само да се ослободи од ниту тоа непрецизност. 33 00:01:45,900 --> 00:01:49,940 >> Па еднаш имаме бројот на центи цел број, може да се продолжи со 34 00:01:49,940 --> 00:01:51,730 остатокот на програмата. 35 00:01:51,730 --> 00:01:55,910 Гледаме тука дека ние сме прогласување број монетите кои ние сме само да се користи 36 00:01:55,910 --> 00:01:59,560 да ги пратите на вкупниот Бројот на монети. 37 00:01:59,560 --> 00:02:01,590 Тука, ние имаме првиот додека јамка. 38 00:02:01,590 --> 00:02:06,780 >> Ние се види додека центи е поголема или еднаква на четвртина, која погоре, е hash 39 00:02:06,780 --> 00:02:14,680 дефинирана како 25, а тоа е точно, ние сакате да прираст нашите бројот на монетите 40 00:02:14,680 --> 00:02:18,350 и декриминирачките центи по квартал. 41 00:02:18,350 --> 00:02:22,810 Се сеќавам дека оваа синтакса е еквивалентно на центи 42 00:02:22,810 --> 00:02:26,020 еднакво центи минус квартал. 43 00:02:26,020 --> 00:02:28,170 Тие се исти. 44 00:02:28,170 --> 00:02:31,850 >> Па што е ова додека јамка правиш? 45 00:02:31,850 --> 00:02:39,260 Идејата тука е дека, ако знам $ 3,42 се должи, јас може да продолжи давањето 46 00:02:39,260 --> 00:02:42,670 четвртини додека не не може да даде четвртини повеќе. 47 00:02:42,670 --> 00:02:47,720 Јас не може да даде четвртини повеќе, еднаш сум дадени 3,25 $. 48 00:02:47,720 --> 00:02:53,300 >> Па тогаш, штом е тоа случајот, ние ќе се пробие на ова додека јамка. 49 00:02:53,300 --> 00:02:57,650 Центи ќе бидат оставени на 17 центи. 50 00:02:57,650 --> 00:03:01,910 И ние ќе продолжиме надолу на следната додека јамка каде што велат, додека центи 51 00:03:01,910 --> 00:03:04,270 е поголема од или еднаква на пара. 52 00:03:04,270 --> 00:03:07,420 >> А сега ние сме прави истата точно работа која ја направивме во четврт случај, 53 00:03:07,420 --> 00:03:09,010 освен со dimes. 54 00:03:09,010 --> 00:03:15,050 Значи со $ 0,17, ние ќе јамка додека не можеме да веќе даде пара, која е 55 00:03:15,050 --> 00:03:16,680 само еднаш. 56 00:03:16,680 --> 00:03:20,470 А потоа ние ќе бидат оставени со 7 центи. 57 00:03:20,470 --> 00:03:24,730 >> Тогаш ние ќе продолжат за да се паричките, која ќе јамка се додека ние не може да даде 58 00:03:24,730 --> 00:03:29,420 повеќе nickels, кој ќе остави нас со два центи. 59 00:03:29,420 --> 00:03:34,400 А потоа, одредување на дното, имаме пени, кои ќе поминете и ќе 60 00:03:34,400 --> 00:03:37,140 конечно ни остави со нула центи. 61 00:03:37,140 --> 00:03:41,670 А потоа на крајот, ние само треба да испечатите нашиот број на парички. 62 00:03:41,670 --> 00:03:44,980 >> Значи оваа програма е совршено точни. 63 00:03:44,980 --> 00:03:47,310 Но, ние всушност може да направи малку подобро. 64 00:03:47,310 --> 00:03:52,660 Сега ако кажам дека ти должам 10.000 $, вие не треба да треба да одат тука е една 65 00:03:52,660 --> 00:03:55,310 квартал, два квартали, три четвртини. 66 00:03:55,310 --> 00:03:59,450 Треба да знаете дека веднаш Ти должам 40.000 четвртини. 67 00:03:59,450 --> 00:04:04,070 >> Сега да ги погледнеме на програма со која се справува со тоа малку подобро. 68 00:04:04,070 --> 00:04:07,190 Во оваа верзија на нештата, ние сеуште треба да побара од корисникот за износот на 69 00:04:07,190 --> 00:04:10,930 промени кои што сакаат во точно На ист начин ние го сторивме досега. 70 00:04:10,930 --> 00:04:14,110 Ние треба да го заокружуваат точно начинот на кој ние го сторивме досега. 71 00:04:14,110 --> 00:04:17,910 И ние се уште имаме монети број прогласена иста како порано. 72 00:04:17,910 --> 00:04:21,399 >> Па тука е местото каде што работи се добие малку поинаква. 73 00:04:21,399 --> 00:04:24,640 Ние сме прави монети плус еднаквите центи поделено со четвртина 74 00:04:24,640 --> 00:04:27,140 каде квартал е 25. 75 00:04:27,140 --> 00:04:31,790 Што ова е велејќи дека е, се земе како многу четвртини како може да оди во центи и додадете 76 00:04:31,790 --> 00:04:33,030 дека за да се монетите. 77 00:04:33,030 --> 00:04:40,100 >> Па ако центи е 142, 142 подели од 25 ни дава 5. 78 00:04:40,100 --> 00:04:43,950 Се сеќавам дека цел број поделба автоматски truncates. 79 00:04:43,950 --> 00:04:46,870 Па ние сме прави монети плус еднаква на 5. 80 00:04:46,870 --> 00:04:51,850 >> Веднаш по ова, ние велиме центи еднакви центи современи квартал. 81 00:04:51,850 --> 00:04:57,150 Се сеќавам дека МО оператор дава ни на остатокот по поделбата. 82 00:04:57,150 --> 00:05:05,840 Па 142 современи квартал, кој ќе им даде 142 минус 125, кое е 17. 83 00:05:05,840 --> 00:05:10,470 Тоа е до крајот, по прави 142 поделено со 25. 84 00:05:10,470 --> 00:05:13,040 >> Па сега центи е еднаква на 17. 85 00:05:13,040 --> 00:05:16,080 И ние го стори истото точната нешто за dimes. 86 00:05:16,080 --> 00:05:18,620 17 поделено со 10 ќе ни даде 1. 87 00:05:18,620 --> 00:05:20,150 И ние додаваат дека монети. 88 00:05:20,150 --> 00:05:25,380 А потоа ние ажурирање центи до биде 17 современи 10, кое е 7. 89 00:05:25,380 --> 00:05:27,200 >> А потоа истото за паричките. 90 00:05:27,200 --> 00:05:29,180 7 поделено со 5 е 1. 91 00:05:29,180 --> 00:05:30,880 Додаваат дека на монети. 92 00:05:30,880 --> 00:05:34,600 А потоа 7 современи 5 е 2. 93 00:05:34,600 --> 00:05:35,910 И тоа е нашата центи. 94 00:05:35,910 --> 00:05:39,065 >> А потоа, за пени, нема вистинска точка во поделба или modding, бидејќи, 95 00:05:39,065 --> 00:05:42,170 ако имаме 0,2 $ останати, може да се само веднаш додаваат дека 96 00:05:42,170 --> 00:05:43,590 нашиот број на парички. 97 00:05:43,590 --> 00:05:48,210 И, конечно, ние треба да се печати ја нашата број на монети и, евентуално, 98 00:05:48,210 --> 00:05:52,100 враќање 0 на крајот на нашата програма да се означи сè што работел. 99 00:05:52,100 --> 00:05:53,120 >> Моето име е Роб. 100 00:05:53,120 --> 00:05:54,020 И тоа беше алчен. 101 00:05:54,020 --> 00:05:57,620 >> [Музички] 102 00:05:57,620 --> 00:06:01,515