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: Привет. 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 Копейка останется на 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 Теперь, если я говорю, что я должен тебе $ 10000, вам не нужно идти вот один 65 00:03:52,660 --> 00:03:55,310 квартал, два квартала, три четверти. 66 00:03:55,310 --> 00:03:59,450 Вы должны немедленно знать, что Я должен вам 40000 кварталы. 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 И мы делаем то же самое точное вещь для пятаков. 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 >> А потом, за гроши, нет никакой реальной Дело в деления или моддинга, так как, 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