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