ZAMYLA Chan: Čestitke Na završetku Prvi par C programe. Znam da je svoj prvi nalet u C sintaksa može biti zastrašujuće. Ali, uvjeravam vas, na kraju Naravno, vi ćete biti u mogućnosti pogledati Prvi par zadataka i ih dovršiti u nekoliko minuta. Sada kada ste uzimajući više upoznati sa sintaksom, idemo caru. U Cezara, korisnik će dostaviti cijeli ključ kao naredbenog retka argument, a zatim ući obični SMS poruka na upit. Program će kodirati tekst i ispis njihov šifrirana poruka. Enciphering za Cezara je vrlo jednostavna. Shift svako slovo, u njihovom običan tekst, po ključu. Kao rezultat toga, to je također prilično nesigurno. Ipak, implementacija Caesar će uvesti da ASCIIMath i niza podataka strukture. Mi ćemo doći do složenije šifre kasnije. Uz Cezar ključ od dva slova, u običan tekst će biti zastupljena Pismo C u šifrirani tekst jer C je nakon dva slova A. B će biti zastupa D i C E. prema kraj je abecede, W je zastupa Y, i X su Z. ali y nema dva slova poslije njega, tako da su simboli omata abecede. Y u tekstualnom tako je zastupao U šifrirani tekst i Z s B. to može pomoći da vidite Caesar Cypher kao kontinuirani abeceda kotača. Kako kodirati svoj tekst, korisnički ući će dva argumenta u zapovjednoj liniji - . / Caesar slijedi ključ. Kao i uvijek, ne možemo vjerovati korisnika potpuno ući ulaz koji bi Osjećaj za naš program. Dakle, morat ćemo potvrditi svoje naredbenog retka ulaz. Umjesto korištenja int main prazninu, mi smo pomoću int, int argc glavni string, argv. Cjelobrojna varijabla argc zastupa broj argumenata prošao u naredbenog retka. I argv je niz, ili mislite o njemu kao Popis od argumenata prošlo u. Tako je za Cezara, kako ćemo provjeriti korisnikov input? Pa, što bi trebao biti samo ulaska Dva argumenata naredbenog retka - . / Cezar i ključ. Dakle, ako argc nije 2, to znači da oni ni zaboravio ključ i samo ušao. / Caesar, ili oni ušao više ključeva. Ako je to slučaj, onda ćete želite ispisati upute i zatvoriti program. Oni će morati pokušati ponovno iz naredbenog retka. No, čak i ako je argc 2, vi ćete trebate provjeriti jesu li dati valjani ključ. Za Cezara, morate cijeli broj. No, argv je niz žice. Kako ste pristupili taj ključ? Brzi pogled na polja - strukture podataka koje imaju više vrijednosti istog tipa podataka. Prijave su nula-indeksirane, što znači da Prvi element je indeks nula a posljednji element, na indeks veličine minus 1, gdje je veličina je broj Elementi u polju. Ako sam proglasio novi spremnik niz polje duljine 3 je vizualno izgleda ovako. Tri kontejnera za gudače , Rame uz rame. Za pristup bilo koji element, upišete ime od polja, a zatim pokazuju Indeks je u uglate zagrade. Evo, ja sam dodjeljivanja vrijednosti svakog Element, baš kao što bih učiniti s bilo drugi string varijablu. Dakle za pristup naše argumente naredbenog retka, sve što morate učiniti je pristupiti pravo element argv niz. Ako korisnik unio. / Blastoff Team Raketa u terminal, argv 0 bi biti. / Blastoff. argv bi se tim, i ARG2 će biti raketna. Sada možemo pristupiti našem ključ, još uvijek je potrebno napraviti sigurni da je točna. Moramo ga pretvoriti u cijeli broj. No, ne možemo samo baci kao smo učinili ranije. Srećom, na Y funkcija brine to za nas, pa čak i vraća 0. Ako niz ne može se pretvoriti na cijeli broj. To je do vas, ipak, reći Korisnik zašto nećeš neka Program nastavite. Spremite rezultat na Y u cijeli, i tamo imate svoj ključ. Sljedeći dio je jednostavan. Traži od korisnika za njihov običan tekst, koji će biti od podataka tipa string. Srećom za nas, svi korisnički unesene žice vrijede. Sada imamo sve potrebne ulazne od korisnika, vrijeme je za nas šifrirati svoju poruku. Koncept je jednostavan Cezara dovoljno da se razumijemo. No, kako se vaše računalo zna što slova dolaze nakon što je jedan drugi? Evo gdje ASCII tablica dolazi u. Svaki lik ima cijeli broj Broj povezan s njom. Glavni je 65. Capital B 66. Mala slova je 97. Mala slova b je 98. Ali likovi nisu ograničeni na samo abecede brojeva. Na primjer, @ simbol ASCII broj 64. Prije nego što se bavi cijeli niz, neka je pretvarati se samo moramo prebaciti jedan znak. Pa, mi samo želimo pomaknuti stvarna Slova u običan tekst, a ne slova i brojeva. Dakle, prva stvar koju ćemo želite provjerili je li lik je u abeceda. Funkcija isalpha to za nas i vraća Boolean - vrijedi ako likova je pismo, false ako nije drugačije. Dvije druge korisne funkcije isupper i islower, uz samorazumljivo imena. Vraćaju li istina daje karakter je veliko ili malo slovo, respektivno. Budući da su Booleani, oni su korisno koristiti kao uvjete. Ako isalpha vraća istina, morat ćete pomak taj lik je ključ. Tako ćemo otvoriti ASCIIMath i učiniti neke ASCII matematiku. Korištenje je vrlo sličan korištenja za Cezara i uzima u ključ u naredbenog retka. Ako sam pokrenuti ASCIIMath 5, čini se dodati 5. da, što mi je slovo F, a prikaz ASCII vrijednost. Tako ćemo pogledati na programu. Možda se pitate, upravo ovdje, zašto pismo je cijeli broj, kada je jasno, dobro, pismo. Ispada da su likovi i cijeli brojevi su međusobno. Stavljanjem pismo u jednom navodnici, cijeli broj možete pohraniti ASCII vrijednost kapitala A. Budite oprezni, iako. Morate pojedinačne odjeću. Bez navodnika, Prevodilac će tražiti varijable ime, a ne znakova. Zatim dodam slovo i ključ, skladištenje suma u int varijable rezultat. Iako rezultat je tip podataka cijeli, moj printf priopćenju koristi % C rezervirano mjesto za znakova. Dakle, program ispisuje karakter povezan s cijeli broj rezultata. A budući da smo tiskao cijeli oblik kao i pomoću% d, vidimo Broj i. Tako sada možete vidjeti da smo liječenje znakova i cijeli brojevi, i obrnuto. Idemo testa iz ASCIIMath nekoliko više puta s 25 kao ključ. Mi smo dobili pismo z. Sada pokušavamo 26. Želimo dobiti pismo je, ali umjesto toga smo dobili lijevi nosač. Dakle, očito, samo dodavanje Ključ pismu neće učiniti. Moramo shvatiti formulu za omotajte oko abecede, kao što je naš Primjer u početku činio. Formula za Carev Pomak na sljedeći način. c iznosi p plus k modulu 26. Zapamtite da modulu je koristan operacija koja nam daje ostatak dijeljenja jedan broj od drugog. Ajmo primijeniti ovu formulu za obični Tekst pismo s ključem od dva. ASCII vrijednost y je 89, koji daje nam 91 modulo 26, što je ekvivalentno 13 - definitivno nije ASCII vrijednost mjesta, što je 67. Humor mi sada i odmaknuti od ASCII vrijednosti u abecednom indeksu gdje je nula i Z je 25. što znači da je Y 24. 24 plus 2, modulu 6, daje nam 26, modulo 26, 0, što je abecedni indeks. Dakle, ova formula čini se odnose na Indeks abecedni pisma i Ne njegov ASCII vrijednost. No, što počnete s ASCII vrijednosti. I za ispis šifrirana karakter, morat ćete svoju ASCII vrijednost kao dobro. To je do vas, dakle, shvatiti kako prebaciti natrag i naprijed. Nakon što shvatiti pravu formulu za jedan znak, sve što trebate učiniti se primijeniti istu formulu za svaku pismo u običan tekst - samo ako to pismo je po abecedi, naravno. I ne zaboravite da vam je potrebno za očuvanje slučaj, gornji ili donji, tamo isUpper i isLower funkcije spomenuto će doći u ruci. Možda ima dvije formule - jedan za velikim slovima i jedan za malim slovima. Dakle isUpper isLower će vam pomoći odrediti koje formula primjenjivati. Kako se prijaviti svoju formulu za svaku jedan znak u nizu? Pa, string je samo niz znakova. Dakle, možete pristupiti svaki lik strane grupiranje tijekom svakog lika u niz u for petlji. Što se tiče stanja vašeg računa za petlje, funkciju strlen, za string Duljina, će doći u ruci. Potrebno je u nizu kao ulazni i vraća duljinu tog niza. Pobrinite se da su pravi knjižnicu Za korištenje funkcije duljine. I tamo imate svoj šifrirani tekst. Moje ime je Zamyla. I [Govoreći CODE].