[Музыка Воспроизведение] ZAMYLA чан: Что бы вы предпочли получить $ 10000000 прямо сейчас или получить пенни каждый день месяца, где каждый последующий день, вы получаете в два раза больше пенни вы получили накануне? В гроши, мы собираемся доказать, почему вы должны определенно взял копейки. Ваша задача, чтобы написать pennies.c-- программу, которая сначала спрашивает пользователя, как сколько дней в месяце и Затем спрашивает, сколько грошей пользователя получит в первый день. Программа должна затем вычислить сумму, которую пользователь будет иметь накопленный в конце месяц и показать его. Мы можем разбить эту программу до в несколько задач. Нам нужно будет запрашивать несколько входов пользователя - дни и месяцы, и гроши на первый день. Мы должны отслеживать, сколько денег Пользователь имеет и обновлять его каждые день, удвоение количества пенни, которые они получают. И, наконец, мы печатаем их итоговая сумма, в долларах. Давайте снасти входа пользователя в первую очередь. Я собираюсь открыть apples.c, короткая программа, которая занимается с входами и выходами. В верхней здесь, я включил некоторые библиотек, что мне нужно - CS50 библиотеку и стандартный Библиотека ввода / вывода. Я печатаю строки с помощью Е функцию из стандартная библиотека ввода / вывода. Но фактический вывод запроса происходит в следующей строке с этим GetInt функции в CS50 библиотеки. GetInt получает входные данные от пользователя и гарантирует, что вход является целым числом. Так я храню входа пользователя в целое Я, вычесть 1 из I, а затем распечатать новое значение, если я. После компиляции apples.c помощью Команда "сделать яблоки," У меня есть Яблоки исполняемый файл. Запуск этого, я буду входа 1. Программа рассказывает мне, что У меня есть 0 яблок осталось. И так, чтобы работали как ожидалось. Так давайте запустим это снова и отрицательным входом 1. Теперь, имея отрицательное количество яблок на самом деле не имеет смысла, но Программа принимает его, потому что недостаток 1, ну, это является целым числом. А теперь программа или монстра внутри программы ест отрицательным яблоко, и теперь у меня есть отрицательными 2 яблока. Хм, так вот один урок - хотя функция и GetInt функций, связанных как GetFlow или GetString получить правильный тип данных, должны убедиться, что входные делает для вашей программы. В гроши, он не будет делать как раз исправный для целого, вы должны будете сделать Убедитесь, что пользователь вводит целое которые имеют смысл данного контекста. Месяц может иметь только 28, 29, 30 или 31 дней. Мы хотим постоянно требовать допустимое целое число. Если они вводят целое за пределами нашей принятых границ, мы будем подсказывать им не снова и снова, пока вы дать нам действительное целое. Напомним, "Repeat Until" блокировать в пустом месте? Вы можете сделать аналогичную конструкцию, в Си с ", а" петля или "сделай то время как" петлю. Структуры в то время как петля имеет состояние которые должны быть выполнены для теле цикла для выполнения. Это должно выглядеть немного похожи, потому что условие так же, как Царапины блоков с углами и идет в скобках из ", а" петлю. Так что условие будет проверять целое находится в пределах соответствующих границ. Вы можете подсказать целое число, используя GetInt а затем выполнить ваши ", а" петли, повторяя быстрого и печати инструкций, в то время как входной не является допустимым. Еще один способ обеспечить правильный вход пользователя является использование "сделай то время как" петли, который очень похож на какое-то время цикла. "Сделай то время как" петля выполняет код внутри тела те, и затем проверяет ли условие или нет. Это полезно для получения пользовательского ввода потому что вы знаете, что вам нужно чтобы подтолкнуть их хотя бы раз. Если условие не выполняется, программа будет выполнять линию после Вашей "сделай то время как" петлю. Если условие выполняется, хотя, цикл будет повторяться "Сделай то время как" петля для проверки пользовательского вход будет выглядеть примерно так. Я объявить переменную N, GetInt и затем повторите, пока N не является действительным. И этот процесс, я объяснил, использовал целочисленных типов данных, которые Вы будете использовать для дней месяца. Но мы знаем, что число копейки будут накапливаться быстрее, поэтому для того, чтобы хранить большие числа, использовать этот тип данных LongLong, но помните, то же Принцип проверки применяется. Удивительный, поэтому, как только у нас есть два действительных вводов от пользователя - дней в месяце и копейки В первый день - мы можем перейти к следующему части программы. В первый день, пользователь начинает с Однако многие гроши они указаны и количество пенни, что они получить на следующий день в два раза. Так что имеет смысл отслеживать из этих двух сумм - сколько денег у пользователя и как многие гроши они дадут. Теперь, делать что-то для 28 до 31 дней повторяются, так что давайте использовать "для" петли для перебора дней месяц, обновление общего и Пенни составят каждый раз. «За» синтаксис цикла содержит следующее - инициализация, условие, и обновления. Ваши "за" цикл инициализации переменной, когда она первая входит в цикл. Если условие выполняется, то тело цикла будет выполняться. После этого обновления будут выполняться. Если условие все еще выполняется, цикл будет выполняться и обновления, и Повторяю, пока ваше состояние оценивается как истина. Вот "за" цикл, который делит целого р 2 в общей сложности 10 раз. Обратите внимание, как я объявил целых р вне мое "за" петли, таким образом, чтобы целое может быть доступна за пределами "для" цикла. После месяца прошло, пора чтобы сообщить пользователю, сколько денег они получили. Согласно спецификации, вы должны сказать пользователю сколько долларов, а не как многие гроши, которые они имеют. Но до сих пор, вы следили за Всего и гроши использованием LongLongs, которые являются целыми числами. Есть 100 пенни до $ 1, так что, если не количество гроши является кратной 100, вам нужно представляют знаков после запятой. Удвоилось автотипия позволяет Вам это сделать. Так как же нам конвертировать из представляющих гроши долларов? Давайте взглянем pi.c. При этом программа занимает LongLong big_pi и делит его на 100 000, и печатает результат до пяти знаков после запятой. Если бы мы хотели отображения четырех десятичных места, то мы можем просто заменить эту номер здесь. Так давайте сохраним, компилировать Пи, и затем увидеть результат, который мы рассчитывать на 3,1415 - Первые пять цифр числа пи. Это не все же. И почему? Ну, потому что это big_pi LongLong, который является целым числом, которое не будет отслеживать знака после запятой. Модификация мне нужно делают это в дивизионе. Мне нужно, чтобы бросить к двойному здесь раньше деления, так как парный не может держать отслеживать десятичных знаков. И я собираюсь добавить новую строку Здесь для лучшего форматирования. И здесь у нас есть это - 3,1416. Вы можете заметить, что она печатает 3.1416 вместо 3,1415, как ожидается. Это потому, что во время туров разделение процесса, а не просто усечения значения. Теперь вы должны быть в состоянии распечатать итоговая сумма правильно, что заканчивает программе. Поздравляю. Меня зовут Zamyla. И это копейки. [Музыка Воспроизведение]