ZAMYLA Чан: Поздравляем по отделке вашего Первые пару программ C. Я знаю, что ваши первые шаги в C синтаксис может быть сложной. Но уверяю вас, в конце Конечно, вы сможете взглянуть на Первые пару заданий и завершить их в считанные минуты. Теперь, когда вы получаете больше знакомы с синтаксисом, давайте перейдем к Цезарю. В Цезаря, пользователь будет представить целое ключ командной строки аргументу, то присвоить обычную текстовое сообщение в командной строке. После этого программа шифровки текста и печать их зашифрованного сообщения. Шифрования для Цезаря довольно просто. Сдвиг каждое письмо, в их простого текста, с помощью ключа. В результате, это также довольно неуверенно. Но реализация Цезарь представит нам ASCIIMath и массивов данных структурами. Мы вернемся к более сложным шифры позже. С Цезарем ключ 2, в письме в простой текст, должна быть представлена буква С в зашифрованный текст, потому что C две буквы имени А. B будет представлена ​​D и C Э. К конце алфавита, W представляет представленной Y, Х на Y, Z. Но не имеет двух букв после него, так шифры оборачивается вокруг алфавита. Y в виде простого текста представляется, таким образом В зашифрованного текста и Z Б. Это может Справка для просмотра Цезаря как Cypher непрерывное колесо алфавита. Чтобы зашифровать их текст, пользователь войдет два аргумента в командную строку - . / Цезаре последующим ключом. Как всегда, мы не можем доверять пользователю полностью ввести входные, которые делают смысл для нашей программы. Так что придется, чтобы проверить их ввод командной строки. Вместо использования тап_п пустоту, мы использованием тап_п, внутр ARGC, строки ARGV. Целая переменная представляет ARGC количество аргументов, переданных в в командной строке. И ARGV является массивом, или думать о нем как Список, из аргументов, передаваемых дюйма Так что для Цезаря, как мы утверждаем пользователей вход? Ну, они должны быть лишь ввода два аргумента командной строки - . / Цезарь и ключ. Так что если ARGC не 2, это означает, что они либо забыли ключ и просто введено. / Цезарем, или они ввели несколько ключей. Если это так, то вам хотите распечатать инструкцию и выйти из программы. Им нужно, чтобы повторить попытку из командной строки. Но даже если ARGC составляет 2, вы будете необходимо проверить, являются ли они дать вам правильный ключ. Для Цезаря, необходимо целое. Но ARGV является массив строк. Как получить доступ к этим ключом? Беглый взгляд на массивы - структур данных, которые держат несколько значения того же типа данных. Записи начинаются с нуля индексируются, это означает, что Первым элементом является индексом ноль а последний элемент имеет индекс размера минус 1, где размер количество элементов в массиве. Если бы я объявил новый почтовый ящик массив строк длины 3, визуально, она выглядит следующим образом. Три контейнера для струнных , Бок о бок. Чтобы получить доступ к любому элементу, вы вводите имя массива, а затем укажем индекс в квадратных скобках. Здесь я задаю значение для каждого элемент, как я хотел бы сделать с любым другой переменной строка. Таким образом, чтобы получить доступ к нашим аргументам командной строки, все, что нам нужно сделать, это получить доступ к правый элемент массива агду. Если пользователь вошел. / Стартом команды Rocket в терминал, агду 0 будет быть. / стартом. ARGV будет команды, и арг2 бы ракеты. Теперь, когда мы можем получить доступ к нашим ключевым, нам все еще нужно, чтобы сделать уверен, что это правильно. Нам нужно преобразовать его в целое число. Но мы не можем просто бросить, как мы сделали ранее. К счастью, в Y функция заботится этого для нас и даже возвращает 0 Если строка не может быть преобразована в целое число. Тебе и карты в руки, хотя, честно Пользователь почему вы не будете позволить программе продолжаться. Сохранить результат в Y в целое, и у вас есть свой ключ. Следующим важным моментом является простым. Запросить у пользователя их простого текста, который будет иметь строковый тип данных. К счастью для нас, все введенные пользователем строки являются действительными. Теперь у нас есть все необходимые входные от пользователя, это время для нас зашифровать свое сообщение. Концепция проста Цезаря достаточно, чтобы понять. Но каким компьютером знать, какие письма приходят друг за другом? Вот где таблицы ASCII приходит дюйма У каждого персонажа есть целое число связанных с ним. Капитал составляет 65 лет. Капитал B составляет 66. Нижний регистр составляет 97. Строчные B составляет 98. Но символы не ограничиваются просто алфавитном чисел. Например, символ @ ASCII является 64 число. Прежде чем перейти к целой строки, давайте представим, что мы просто должны перейти один символ. Ну, мы только хотим сдвинуть фактические Буквы в обычный текст, не знаки или цифры. Итак, первое, что мы хотим проверить, является ли персонаж находится в алфавита. Функция ISALPHA делает это для нас и возвращает логическое - верно, если символов письме, ложное в противном случае. Два других полезных функций ISUPPER и IsLower, с пояснений имена. Они выполнены, если заданный символ это верхний или нижний регистр, соответственно. Так как они логические, они Полезно использовать в качестве условий. Если ISALPHA возвращает истину, вам нужно переложить этот символ ключом. Так давайте откроем для ASCIIMath и сделать некоторые ASCII математику. Использование очень похоже на использование для Цезаря и берет в ключ на командной строки. Если я запускаю ASCIIMath 5, это, кажется, добавить 5, давая мне Буква F, и отображение ASCII значения. Итак, давайте взглянем на программу. Вы можете удивиться, прямо здесь, почему буква обозначает целое число, когда это ясно, ну, в письме. Получается, что символы и целые являются взаимозаменяемыми. Помещая письмо в одну кавычки, целое может хранить ASCII стоимости капитала А. Однако будьте осторожны. Вам нужно одной одежде. Без одной кавычки, компилятор будет искать переменную имени, а не характер. Затем я добавляю письмо и ключ, хранение Сумма в целочисленное результат переменных. Даже если результат имеет тип данных целое, мой Е оператор использует % С заполнитель для символов. Таким образом, программа печатает характера связанные с целочисленный результат. И так как мы напечатали целое форме, а также использование% D, мы видим, числа, а также. Итак, теперь вы видите, что мы лечения и символы целые числа, и наоборот. Давайте проверим ASCIIMath из нескольких более раз с использованием 25 в качестве ключа. Мы получаем письма г. Сейчас мы пытаемся 26. Мы хотим получить письмо, но Вместо этого мы получаем левую скобку. Так, очевидно, просто добавив Ключ к письму не будет делать. Мы должны выяснить формулу, чтобы обернуть по всему алфавиту, как и наши Например, в начале сделал. Формула для Цезаря сдвиг заключается в следующем. C равна P Плюс к модулю 26. Помните, что по модулю является полезным операция, которая дает нам остаток деления одного числа на другое. Давайте применим эту формулу к равнине Текст письма с ключом 2. ASCII значение у 89, которая дает нам 91 по модулю 26, которых равна 13 - определенно не ASCII значения а, который 67. Юмор мне теперь и отойти от ASCII значения алфавитный указатель где равна нулю, а Z 25, это означает, что Y равно 24. 24 плюс 2, по модулю 6, дает нам 26, 26 по модулю, 0, который является алфавитный указатель. Так что эта формула, кажется, относится к алфавитный указатель и буквы Не его значение ASCII. Но вы начинаете с ASCII значений. И, чтобы напечатать символ зашифрованного текста, Вы должны будете его ASCII значения, а также. Тебе и карты в руки, то, чтобы выяснить, Как переключаться. После того как вы выяснить правильную формулу за одним персонажем, все, что вам нужно сделать, это применить такую ​​же формулу, чтобы каждый Письмо в простой текст - только если эта буква алфавитного, конечно. И помните, что вам необходимо сохранить случае, верхняя или нижняя, вот где ISUPPER и IsLower функций упоминалось ранее пригодится. Возможно, вам придется две формулы - один для прописных букв и один в нижнем регистре. Так ISUPPER IsLower поможет вам определить, какой формуле применить. Как Вы применяете вашу формулу для каждого одного символа в строке? Ну, просто строка массив символов. Таким образом, вы можете получить доступ каждый знак группировки по каждому символу в строку в цикле. Что касается состояния вашего цикл, Функция StrLen, для струнного длины, пригодится. Она занимает в строке в качестве входных и возвращает длину этой строки. Убедитесь, что включает в себя право библиотеку использовать функцию длину строки. И у вас есть зашифрованный текст. Меня зовут Zamyla. И [говорит CODE].