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 >> ROB BOWDEN: Hi. 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 И така, това е целта на тази задача / докато контур. 19 00:00:48,460 --> 00:00:52,420 Ние продължаваме примка докато долара е по-малко от нула. 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 >> Така че след като имаме този брой на долара, ние виждаме, че тук имаме вътр цента 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 >> Ние виждаме, докато цента е по-голям от или равно на четвърт, което по-горе, е хеш 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 Cents ще бъдат оставени в 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 освен с десетки цента. 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 повече монети, което ще ни оставя с два цента. 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 Не забравяйте, че целочислено деление автоматично отрязва. 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, ще ни даде една. 87 00:05:18,620 --> 00:05:20,150 И ние се добави, че по отношение на монети. 88 00:05:20,150 --> 00:05:25,380 И тогава ние актуализираме цента до бъде 17 мод 10, което е седем. 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 >> И тогава, за жълти стотинки, няма истинска точка в разделителната или модифициране, тъй като, 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