>> [Музички]
>> Роб BOWDEN: Здраво.
Јас сум Роб.
И ајде да се алчни.
>> Така првото нешто што треба да направите е да побара од корисникот точно како
многу промени се должи.
Па еве, гледаме дека имаме на не / а јамка.
И ние сме поставување долари еднаква на GetFloat.
Што е GetFloat?
Тоа е една од функциите во CS50 библиотека која добива
плови од корисникот.
Запомни, со цел да ја користат таа функција, ние треба да хаш вклучуваат
CS50.h на врвот.
>> Па еднаш имаме таа вредност од корисникот, ние исто така треба да бидете сигурни дека
тоа е валидна вредност.
Ние не можеме да должам негативни пари.
И така тоа е целта на овој do / а јамка.
Продолжуваме looping додека долари е помала од нула.
И на не / додека јамка е вистинската работа да се користи тука, бидејќи ние треба да побара од
корисникот барем еднаш за тоа како колку пари се должи.
>> Значи еднаш сме се дека бројот на долари, гледаме тука имаме int центи
еднакво круг долари пати CENTS_PER_DOLLAR.
На врвот, можеме да видиме дека CENTS_PER_DOLLAR е
разумно дефинира како 100.
Значи она што е оваа линија правиш?
>> Па, ако се сеќавате, со подвижна запирка вредности не се сосема прецизни.
За разлика од цели броеви, ние не може да претставува подвижна запирка вредности точно.
Секогаш има некој вид на непрецизност.
Па ние преферираат да работат со само цели броеви во текот на овој проблем.
И тука, ако корисникот влезе 3,42 $, ние сме конвертирање дека до 342 центи и
заокружување, само да се ослободи од ниту тоа непрецизност.
>> Па еднаш имаме бројот на центи цел број, може да се продолжи со
остатокот на програмата.
Гледаме тука дека ние сме прогласување број монетите кои ние сме само да се користи
да ги пратите на вкупниот Бројот на монети.
Тука, ние имаме првиот додека јамка.
>> Ние се види додека центи е поголема или еднаква на четвртина, која погоре, е hash
дефинирана како 25, а тоа е точно, ние сакате да прираст нашите бројот на монетите
и декриминирачките центи по квартал.
Се сеќавам дека оваа синтакса е еквивалентно на центи
еднакво центи минус квартал.
Тие се исти.
>> Па што е ова додека јамка правиш?
Идејата тука е дека, ако знам $ 3,42 се должи, јас може да продолжи давањето
четвртини додека не не може да даде четвртини повеќе.
Јас не може да даде четвртини повеќе, еднаш сум дадени 3,25 $.
>> Па тогаш, штом е тоа случајот, ние ќе се пробие на ова додека јамка.
Центи ќе бидат оставени на 17 центи.
И ние ќе продолжиме надолу на следната додека јамка каде што велат, додека центи
е поголема од или еднаква на пара.
>> А сега ние сме прави истата точно работа која ја направивме во четврт случај,
освен со dimes.
Значи со $ 0,17, ние ќе јамка додека не можеме да веќе даде пара, која е
само еднаш.
А потоа ние ќе бидат оставени со 7 центи.
>> Тогаш ние ќе продолжат за да се паричките, која ќе јамка се додека ние не може да даде
повеќе nickels, кој ќе остави нас со два центи.
А потоа, одредување на дното, имаме пени, кои ќе поминете и ќе
конечно ни остави со нула центи.
А потоа на крајот, ние само треба да испечатите нашиот број на парички.
>> Значи оваа програма е совршено точни.
Но, ние всушност може да направи малку подобро.
Сега ако кажам дека ти должам 10.000 $, вие не треба да треба да одат тука е една
квартал, два квартали, три четвртини.
Треба да знаете дека веднаш Ти должам 40.000 четвртини.
>> Сега да ги погледнеме на програма со која се справува со тоа малку подобро.
Во оваа верзија на нештата, ние сеуште треба да побара од корисникот за износот на
промени кои што сакаат во точно На ист начин ние го сторивме досега.
Ние треба да го заокружуваат точно начинот на кој ние го сторивме досега.
И ние се уште имаме монети број прогласена иста како порано.
>> Па тука е местото каде што работи се добие малку поинаква.
Ние сме прави монети плус еднаквите центи поделено со четвртина
каде квартал е 25.
Што ова е велејќи дека е, се земе како многу четвртини како може да оди во центи и додадете
дека за да се монетите.
>> Па ако центи е 142, 142 подели од 25 ни дава 5.
Се сеќавам дека цел број поделба автоматски truncates.
Па ние сме прави монети плус еднаква на 5.
>> Веднаш по ова, ние велиме центи еднакви центи современи квартал.
Се сеќавам дека МО оператор дава ни на остатокот по поделбата.
Па 142 современи квартал, кој ќе им даде 142 минус 125, кое е 17.
Тоа е до крајот, по прави 142 поделено со 25.
>> Па сега центи е еднаква на 17.
И ние го стори истото точната нешто за dimes.
17 поделено со 10 ќе ни даде 1.
И ние додаваат дека монети.
А потоа ние ажурирање центи до биде 17 современи 10, кое е 7.
>> А потоа истото за паричките.
7 поделено со 5 е 1.
Додаваат дека на монети.
А потоа 7 современи 5 е 2.
И тоа е нашата центи.
>> А потоа, за пени, нема вистинска точка во поделба или modding, бидејќи,
ако имаме 0,2 $ останати, може да се само веднаш додаваат дека
нашиот број на парички.
И, конечно, ние треба да се печати ја нашата број на монети и, евентуално,
враќање 0 на крајот на нашата програма да се означи сè што работел.
>> Моето име е Роб.
И тоа беше алчен.
>> [Музички]