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].