ZAMYLA CHAN: Sveikinimai nuo apdailos jūsų Pirmoji pora C programomis. Žinau, kad jūsų pirmasis įsiveržimas į C sintaksė gali būti varginantis. Bet aš jus patikinti, tuo tikslu Žinoma, jūs galėsite pažvelgti į Pirmoji pora užduotis ir užbaigti juos per kelias minutes. Dabar, kad jūs gaunate daugiau susipažinę su sintakse, galime gauti Cezariui. Be Cezaris, vartotojas bus pateikti sveikasis skaičius raktas kaip komandinės eilutės argumentas, tada įveskite paprastas tekstinį pranešimą į eilutę. Programa bus tada šifruoti tekstas ir spausdinimo jų ciphertext pranešimą. Caesar šifravimo yra gana paprasta. Shift kiekvieną raidę, jų teksto, kurį klavišą. Kaip rezultatas, jis taip pat gana nesaugus. Bet įgyvendinančią Cezaris bus pristatyti mums ASCIIMath ir masyvo duomenų struktūros. Mes susisieksime su daugiau sudėtingas šifrai vėliau. Su Caesar rakte 2 raide A teksto būtų atstovaujamos raidė C ciphertext nes C yra dvi raidės nuo A B būtų atstovaujamos D ir C E. link abėcėlės pabaigos, W atstovaujamos Y ir X iki Z. Bet Y neturi dvi raidės, po ja, todėl kad šifrai kimba abėcėlės. Y paprasto teksto Taigi atstovaujamos Į ciphertext ir Z. B. Jis gali padėti pamatyti Cezario šifras kaip nuolatinis abėcėlė ratas. Norėdami šifruoti savo tekstą, vartotojo pateks du argumentus į komandinės eilutės - . / Caesar po raktu. Kaip visada, mes negalime pasitikėti vartotoją visiškai įvesti indėlį, kad padaryti prasmė mūsų programoje. Taigi, mes turime patikrinti jų komandinės eilutės įvesties. Vietoj to, naudojant int main negaliojančiu, mes naudojant int main int argc, styginių argv. Sveikasis kintamasis argc atstovauja argumentų patenka į skaičius komandinės eilutės. Ir argv yra masyvas, arba galvoti apie tai, kaip sąrašas, iš argumentų, praėjo in Taigi, Cezaris, kaip mes patvirtinti naudotojo įvesties? Na, jie turėtų būti sudaryti dvi komandinės eilutės argumentai - . / Caesar ir raktas. Taigi, jei argc nėra 2, tai reiškia, kad jie arba pamiršo raktą ir tik įrašytas. / Cezaris, arba jie įrašyti kelis raktus. Jei tai toks atvejis, tada jums norite spausdinti instrukcijas ir uždarykite programą. Jie turi bandykite dar kartą iš komandinės eilutės. Bet net jei argc yra 2, jūs reikia patikrinti, ar jie jums galiojantį klavišą. Dėl Cezaris, jums reikia sveikasis skaičius. Bet argv yra eilučių masyvo. Kaip jūs patektumėte į atitinkamą klavišą? Žvilgsnis masyvai - duomenų struktūrų, turinčių daug vertės tos pačios duomenų tipą. Įrašai yra nulinės indeksuotas, tai reiškia, kad Pirmasis elementas yra puslapis nulis ir paskutinis elementas yra dydžio indeksas minus 1, kur dydis skaičius masyvo elementų. Jei aš paskelbė naują eilutę masyvo pašto dėžutę ilgio 3 vizualiai, tai atrodo taip. Trys konteineriai styginiams , Šalia. Norėdami prieiti prie kurio nors elemento, įveskite pavadinimą masyvo ir tada rodo laužtiniuose skliaustuose indeksas. Čia aš priskyrimo vertę kiekvienam elementas, kaip aš norėčiau tai padaryti su bet Kiti styginiai kintamasis. Taigi, norint naudotis mūsų komandų eilutės argumentus, visi mes turime padaryti, tai gauti teisė elementas argv masyvo. Jei vartotojas įveda. / Blastoff komanda Raketų į terminalą, argv 0 būtų būti. / blastoff. argv būtų grupė, ir arg2 būtų raketa. Dabar, kad mes galime pasiekti mūsų raktą, mes vis dar reikia padaryti įsitikinkite, kad ji yra teisinga. Mums reikia ją konvertuoti į sveikasis skaičius. Bet mes negalime tiesiog įmetė kaip mes padarėme anksčiau. Laimei, Y funkcija rūpinasi tai mums ir net grąžina 0 jei eilutė negali būti konvertuojamos į sveikojo skaičiaus. Tai iki jums, nors pasakyti vartotojo kodėl jums nebus leisti programai tęsti. Atmintį rezultatą Y sveikasis skaičius, ir jūs turite savo raktą. Kitas dalis yra labai paprasta. Paskatinti jų paprasto teksto vartotoją, tai bus tipo duomenų eilutę. Laimei mums, visi vartotojo įvedamas stygos yra galiojantis. Dabar, mes turime visus reikalingus išteklius nuo vartotojo, atėjo laikas mums šifruoti savo pranešimą. Cezario Koncepcija yra paprasta pakankamai suprasti. Tačiau kaip kompiuteris žinoti, kuris laiškai ateina vienas po kito? Štai kur ASCII lentelę Įgijusi Kiekvienas personažas turi sveikasis skaičius numeris, susietas su juo. Kapitalas yra 65. Kapitalo B 66. Mažosios yra 97. Mažosios raidės b yra 98. Tačiau ženklai yra ne tik iki vos abėcėlės skaičių. Pavyzdžiui, simbolio @ yra ASCII skaičius 64. Prieš sprendžiant su visa eilutę, Tarkime, mes tiesiog pereiti vieną simbolį. Na, mes tik norime perkelti faktinį raidės paprasto teksto, o ne simboliai arba skaičiai. Taigi pirmas dalykas, kad mes norime patikrinti, ar simbolis yra abėcėlė. Funkcija IsAlpha tai atlieka už mums ir grąžina Būlio - tiesa, jei simbolių yra laiškas, false, jei kitaip. Dvi kitos naudingos funkcijos yra isupper ir IsLower, su Savaime suprantama, pavadinimus. Jie grįžta tiesa, jei registro simbolis yra didžiosios ar mažosios, atitinkamai. Kadangi jie yra loginę, jie naudinga naudoti kaip sąlygomis. Jei IsAlpha grąžina true, jums reikės pereiti tą simbolį pagal raktą. Taigi leiskite atvira ASCIIMath ir ką nors ASCII matematikos. Naudojimas yra labai panašus į naudojimo Caesar ir užima tuo raktu komandinės eilutės. Jei aš paleisti ASCIIMath 5, atrodo, pridėti 5, kad suteikėte man laišką F ir rodyti ASCII reikšmė. Taigi galime pažvelgti į programos išvaizdą. Jums gali kilti klausimas, čia, kodėl laiškas yra sveikasis skaičius, kai jis aiškiai, gerai, laiškas. Pasirodo, kad simboliai ir sveikieji skaičiai yra sukeičiami. Įtraukdami laišką į vieną kabutės, sveikasis skaičius gali laikyti ASCII reikšmė kapitalo A. Būkite atsargūs, nors. Jūs turite bendrosios drabužius. Be kabučių, sudarytojas atrodytų kintamojo pavadintas, o ne charakterį. Tada pridėti raštą ir raktas, saugoti , suma int kintamųjų. Nors rezultatas yra duomenų tipas sveikasis skaičius, mano printf naudoja % C vietos rezervavimo ženklų. Taigi, programa spausdina simbolį susijęs su sveiko rezultatas. O kadangi mes atspausdintas sveikasis skaičius forma taip pat naudojant% s, matome, skaičius taip pat. Taigi, dabar jūs galite pamatyti, kad mes gydyti simbolius ir sveikieji skaičiai, ir atvirkščiai. Leiskite testas iš ASCIIMath kelių daugiau kartų, kaip raktas 25 naudoja. Mes gauname raide Z. Dabar mes stengiamės 26. Mes norime, kad raidė a, o o mes gauname kairįjį laikiklį. Taigi akivaizdu, tiesiog pridedant raktas į laišką nedarys. Mums reikia išsiaiškinti formulę, į kuriuos vyniojami aplink abėcėlė, kaip mūsų pavyzdys iš pradžių padarė. Už Cezario formulė poslinkis yra taip. c lygus p plius k Modulo 26. Atminkite, kad modulio yra naudinga operacija, kuri suteikia mums likusią dalijant vieną skaičių kitą. Leiskite taikyti šią formulę paprastas tekstas laiškas su 2 raktu. ASCII reikšmė y yra 89, kuris suteikia mums 91 modulo 26, o tai lygu 13 - tikrai ne ASCII reikšmė iš, kuris yra 67. Humoras man dabar ir tolti nuo ASCII vertės į abėcėlinę rodyklę kur yra nulis ir Z yra 25 tai reiškia, kad Y yra 24. 24 plius 2 modulio 6, suteikia mums 26, moduliu 26, 0, kuris yra abėcėlinė rodyklė. Taigi ši formulė atrodo, taikomos abėcėlinė rodyklė rašto ir ne jo ASCII reikšmė. Bet jūs pradėsite su ASCII reikšmes. Ir spausdinti ciphertext pobūdžio, jums reikia savo ASCII reikšmė taip pat. Tai iki jums, tada išsiaiškinti, kaip pereiti atgal ir pirmyn. Kai jums išsiaiškinti tinkamą formulę už vieną rašmenį, viskas, ką reikia padaryti, yra taikyti tą pačią formulę kiekvienam raidė paprastąjį tekstą - tik jei šis laiškas yra abėcėlinis, žinoma. Ir atminkite, kad jums reikia išlaikyti atveju, viršutinės ar apatinės, tai kur isUpper ir IsLower funkcijos minėta praverčia. Jūs galite turėti dvi formules - vienas didžiosiomis raidėmis ir vienas mažosios. Taigi isUpper IsLower padės jums nustatyti, kurios formulė taikyti. Kaip taikyti savo formulę kiekvienam vieną simbolį į eilutę? Na, eilutė yra tiesiog masyvas simbolių. Taigi, galite prieiti prie kiekvieno požymio Grupuojant per kiekvieną pobūdžio eilutę už linijos. Kalbant apie jūsų būklę kilpos, funkcija strlen, už eilutę ilgis, bus naudinga. Ji trunka eilutę kaip pirkimo ir grąžina tos eilutės ilgis. Įsitikinkite, kad įtraukėte tinkamą biblioteką naudoti eilutės ilgis funkciją. Ir jūs turite savo ciphertext. Mano vardas Zamyla. Ir [KALBANTI kodą].