>> [Музика грає]
>> 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 наприкінці нашої програми для позначення все працювало.
>> Мене звуть Боб.
І це було Жадібний.
>> [Музика грає]