>> [Музыка гуляе]
>> ROB BOWDEN: Прывітанне.
Я Роб.
І давайце Прагны.
>> Таму першае, што мы павінны зрабіць, будзе запытваць у карыстальніка, як менавіта
шмат змен належыць.
Дык вось, мы бачым, у нас ёсць зрабі / час цыклу.
І мы ўсталёўваем даляраў роўная GetFloat.
Што такое GetFloat?
Гэта адна з функцый у Бібліятэка CS50, які атрымлівае
плаваць ад карыстальніка.
Памятаеце, для таго, каб выкарыстоўваць гэтую функцыю, мы павінны хэш ўключаюць
CS50.h на самым версе.
>> Таму, як толькі ў нас ёсць гэта значэнне з Карыстальнік, мы таксама павінны быць упэўненыя, што
гэта з'яўляецца дапушчальным значэннем.
Мы не можам абавязаны негатыўнае грошы.
І так вось мэта гэтага спраў / у той час як пятля.
Мы працягваем цыкл у той час даляраў менш за нуль.
І зрабі / час цыклу гэта правільна выкарыстаць тут, так як мы павінны спытаць
Карыстальнік не радзей за адзін раз на працягу якога колькі грошай належыць.
>> Таму, як толькі ў нас ёсць, што колькасць долараў, мы бачым тут мы маем дзесятковага цэнтаў
роўная круглы даляраў разы CENTS_PER_DOLLAR.
У верхняй частцы, мы бачым, што CENTS_PER_DOLLAR з'яўляецца
разумна вызначана як 100.
Так што ж гэтая лінія робіць?
>> Ну, калі вы памятаеце, з якая плавае кропкай значэння не зусім дакладным.
У адрозненне ад цэлых лікаў, мы не можам уявіць значэння з якая плавае коскі ў дакладнасці.
Там заўсёды нейкая недакладнасці.
Такім чынам, мы аддаем перавагу працаваць толькі з цэлымі лікамі на працягу гэтай праблемы.
І вось, калі карыстальнік увёў $ 3.42, мы пераўтварэнні, што да 342 цэнтаў і
акругленне, проста пазбавіцца ад любы з гэтай недакладнасці.
>> Таму, як толькі ў нас ёсць шэраг цэнтаў у цэлае, мы можам працягваць з
Астатняя частка праграмы.
Мы бачым тут, што мы абвясціўшы цэлае манеты, якія мы толькі выкарыстоўваць
адсочваць ад агульнага колькасць манет.
Тут, у нас ёсць наш першы час цыклу.
>> Мы бачым, у той час як цэнтаў больш або роўная чвэрці, якая вышэй, з'яўляецца хэш
вызначаецца як 25, а гэта праўда, мы хочаце павялічыць нашу колькасць манет
і памяншэння цэнтаў па кварталах.
Памятаеце, што гэты сінтаксіс эквівалентна цэнтаў
роўная цэнтаў мінус чвэрць.
Тыя тое ж самае.
>> Дык што ж гэта пакуль пятля робіш?
Ідэя заключаецца ў тым, што, калі я ведаю, $ 3.42 належыць, я магу працягваць даваць
чвэрці да я не магу даць чвэрці больш.
Я не магу даць больш за чвэрць, адзін раз я даў $ 3.25.
>> Такім чынам, як толькі гэта так, мы будзем вырвацца з гэтага час цыклу.
Капейка застанецца на 17 цэнтаў.
І мы будзем працягваць рухацца да наступнага у той час як цыкл, дзе мы кажам, у той час цэнтаў
больш або роўна цэнтаў.
>> І зараз мы робім тое ж самае дакладнае , Што мы зрабілі ў чвэрцьфінале выпадку,
акрамя як з пятакоў.
Так з $ 0,17, мы будзем цыкл, пакуль мы можам больш не даюць ні капейкі, што з'яўляецца
роўна адзін раз.
І тады мы застанемся з 7 цэнтаў.
>> Тады мы будзем працягваць на нікель, якія не будзе цыкл, пакуль мы не можам даць
Ці яшчэ нікель, які будзе пакінуць нас з двух цэнтаў.
А потым, на дне, у нас ёсць пені, які будзе цыкл і будзе
нарэшце пакінуць нас з нулявымі цэнтаў.
Тады ў канцы, нам проста трэба раздрукаваць нашу колькасць манет.
>> Так што гэта праграма цалкам правільна.
Але мы можам рэальна зрабіць трохі лепш.
Цяпер, калі я кажу, што я павінен табе $ 10000, вам не трэба ісці вось адзін
квартал, два квартала, тры чвэрці.
Вы павінны неадкладна ведаць, што Я павінен вам 40000 кварталы.
>> Зараз давайце паглядзім на праграму, якая апрацоўвае яго крыху лепш.
У гэтай версіі рэчаў, мы ўсё яшчэ павінны спытаць карыстальніка на суму
змяніць, што яны хочуць у дакладнасці гэтак жа, як мы рабілі раней.
Нам трэба акругліць яго сапраўды то, як мы рабілі раней.
І ў нас яшчэ ёсць нашы манеты цэлае заявіў сапраўды гэтак жа, як і раней.
>> Такім чынам, вось дзе рэчы атрымаць крыху адрозніваецца.
Мы робім манеты плюс роўных цэнтаў, падзеленыя квартале
дзе квартал 25.
Што гэта кажу, узяць столькі чвэрці, як можа перайсці ў цэнтаў і дадаць
што да манетах.
>> Так што калі цэнтаў складае 142, 142 падзеленыя на 25 дае нам 5.
Памятаеце, што цэлалікавых дзяленне аўтаматычна абразае.
Такім чынам, мы робім манеты плюс роўная 5.
>> Адразу пасля гэтага, мы гаворым цэнтаў роўныя цэнтаў мод квартале.
Памятаеце, што мод аператар дае нам рэшта ад дзялення.
Так 142 мод квартал, што дасць 142 мінус 125, што на 17.
Гэта рэшта ад рабіць 142, дзеленай на 25.
>> Так што цяпер цэнтаў роўна 17.
І мы робім тое ж самае дакладнае рэч для пятакоў.
17 падзяліць на 10, дасць нам 1.
І дадамо, што да манетах.
А потым мы абнаўляем цэнтаў да быць 17 мод 10, што на 7.
>> А потым тое ж самае для нікель.
7 падзяліць на 5 роўна 1.
Дадамо, што на манетах.
А потым 7 мод 5 з'яўляецца 2.
І вось нашы цэнтаў.
>> А потым, за грошы, няма ніякай рэальнай Справа ў дзялення або модынгу, так як,
калі ў нас ёсць $ 0,2 засталося, мы можам проста адразу дадаць, што ў
наш колькасць манет.
І, нарэшце, мы павінны раздрукаваць нашы колькасць манет і, магчыма,
вярнуць 0 ў канцы нашай праграмы для абазначэння ўсё працавала.
>> Мяне клічуць Боб.
І гэта было Прагны.
>> [Музыка гуляе]