ZAMYLA Chan: Urime on përfunduar Juaj Çifti i parë i programeve C. Unë e di se bastisje juaj e parë në Sintaksa C mund të jetë e frikshme. Por unë ju siguroj, në fund të Sigurisht, ju do të jetë në gjendje të shikojmë në Çifti i parë i detyrave dhe përfunduar ato në minuta. Tani që ju jeni duke marrë më të njohur me sintaksë, le të merrni për të Cezarit. Në Cezarit, përdoruesi do të paraqesë një Çelësi integer si një command line Argumenti, pastaj të hyjë në një plain mesazh me tekst në ftim. Programi pastaj do të shifroj Teksti dhe të shtypura Mesazhi ciphertext tyre. Enciphering për Cezarit është mjaft e thjeshtë. Shift çdo letër, në punën e tyre plain text, nga çelësi. Si rezultat, ajo është edhe goxha i pasigurt. Por implementues Cezari do të prezantoj na ASCIIMath dhe array dhënave Strukturat. Ne do të merrni për të më komplekse shifra më vonë. Me një çelës Caesar e 2, shkronja A në plain text do të përfaqësohet nga C në letër, sepse ciphertext C është dy letra pas A. B, do të jetë përfaqësuar nga D dhe C nga E. Drejt fundi i alfabetit, W eshte përfaqësuar nga Y dhe X nga Z. Por Y nuk ka dy letra pas tij, kështu që shifrave përfundon rreth alfabetit. Y në tekst të thjeshtë është e përfaqësuar në këtë mënyrë nga Një në ciphertext, dhe Z nga B. Ajo mund të ndihmojë për të parë Cypher Caesar si një rrotë vazhdueshëm alfabeti. Për të shifroj tekstin e tyre, përdoruesit do të hyjë në dy argumente në vijën komanduese - . / Cezari ndjekur nga një çelës. Si gjithmonë, ne nuk mund të besimit përdorues plotësisht për të hyrë në të dhëna që e bëjnë Ndjenja për programin tonë. Pra, ne do të duhet të vërtetoni e tyre command line input. Në vend të përdorimit zbrazëti int main, ne jemi përdorimin e int kryesore argc string, int, argv. Argc ndryshore integer përfaqëson numri i argumenteve të miratuara në command line. Dhe argv është një grup, ose të mendojnë për atë si një listë, nga argumentet e kaluar in Pra, për të Cezarit, si nuk kemi provoj input të përdoruesit? E pra, ata duhet vetëm të hyjnë dy argumente command line - . / Cezari dhe një çelës. Pra, nëse nuk është argc 2, që do të thotë se ata ose harruan një çelës dhe vetëm hyrë. / Çezari, ose ato hyri çelësat shumta. Nëse ky është rasti, atëherë ju do të doni të shtypura udhëzimet dhe mbaro programin. Ata do të duhet të provoni përsëri nga vija e komandës. Por edhe në qoftë se argc është 2, ju do të duhet të kontrolloni nëse ata ju jap një çelës të vlefshëm. Për Cezarit, ju keni nevojë për një numër të plotë. Por argv është një koleksion të strings. Si mendoni ju hyni në atë çelësin? Një vështrim i shpejtë në vargjeve - Strukturat e të dhënave që mbajnë të shumta Vlerat e llojit të njëjtë të të dhënave. Entries janë indeksuar me zero, që do të thotë se elementi i parë është zero indeksi dhe element i fundit është në madhësinë e indeksit minus 1, ku madhësia është numri i elementet në rrjet. Nëse unë shpalli një të ri array kuti postare string i gjatësi 3, sy, ajo duket si ky. Tre kontejnerët për strings , Krah për krah. Për të hyrë në çdo element, ju shtypni emrin i vargut dhe pastaj të tregojë Indeksi në kllapa katrore. Këtu, unë jam caktuar një vlerë për çdo element, ashtu si unë do të bëj me ndonjë variabël string tjetër. Pra, për të hyrë në të linjës komanduese argumentet tona, të gjithë ne duhet të bëni është të hyni në element drejta e array argv. Në qoftë se përdoruesi ka hyrë. / Nisje Ekipin Rocket në terminal, do argv 0 jetë. / nisje. argv do të jetë ekip, dhe arg2 do të jenë raketa. Tani që ne mund të hyni çelësin tonë, ne ende nevojë për të bërë i sigurt se ajo është e saktë. Ne kemi nevojë për të kthyer atë në një numër të plotë. Por ne nuk mund të hedhin vetëm si ne kemi bërë më parë. Për fat të mirë, një funksion që të kujdeset për Y e kjo për ne dhe edhe returns 0 në qoftë se vargu nuk mund të konvertohet në një numër të plotë. Është e deri tek ju, edhe pse, për të treguar përdorues pse ju nuk do le të programit të vazhdojë. Shitore rezultat i një Y në një integer, dhe nuk keni çelësin tuaj. Pjesa tjetër është e thjeshtë. Prompt përdorues për tekstin e tyre të thjeshtë, e cila do të jetë e tipit të të dhënave string. Fatmirësisht për ne, të gjithë përdoruesit futur vargjet janë të vlefshme. Tani që ne kemi të gjitha të dhëna të nevojshme nga përdoruesit, kjo është koha për ne për të shifroj mesazhin e tyre. Koncepti i Cezarit është e thjeshtë mjaftueshme për të kuptuar. Por si e bën kompjuterin tuaj të dinë se cilat Letrat vijë pas njëri-tjetrit? Ja ku vjen in Tabela ASCII Çdo karakter ka një numër të plotë Numri i lidhur me të. Capital Një është 65. Capital B është 66. Vogle a është 97. B vogle është 98. Por karaktere nuk janë të kufizuara në vetëm numra alfabetikë. Për shembull, simbol @ 64 është numri i ASCII. Para që kanë të bëjnë me vargun e tërë, le të pretendojë ne vetëm duhet të zhvendoset një karakter. E pra, ne duam vetëm të zhvendoset aktuale letra në tekst të thjeshtë, jo shkronja ose numra. Pra, gjëja e parë që ne do të duan të kontrolloni është nëse personazhi është në alfabeti. Isalpha funksion e bën këtë për dhe na kthen një boolean - vërtetë nëse personazhet është një letër, false nëse ndryshe. Dy funksione të tjera të dobishme janë isupper dhe islower, me vetë-shpjeguese emrat. Ata kthehen vërtetë në qoftë se karakteri dhënë është ose uppercase vogle, respektivisht. Që ata janë Booleans, ata janë dobishme për të përdorur si kushte. Nëse isalpha kthehet e vërtetë, ju do të duhet të zhvendoset këtë karakter nga çelësi. Pra, le të hapur për ASCIIMath dhe të bëjë disa matematikë ASCII. Përdorimi është shumë e ngjashme të përdorimit për Cezarit dhe merr në një kyç në command line. Nëse unë drejtuar ASCIIMath 5, duket për të shtuar 5 deri në një, duke i dhënë mua f letër, dhe shfaqur vlerën ASCII. Pra, le të marrin një vështrim në program. Ju mund të pyes veten, të drejtë këtu, pse letër është një numër i plotë, kur është e në mënyrë të qartë, të mirë, një letër. Ajo rezulton se personazhet dhe integers janë këmbyeshëm. Duke vënë në një letër të vetme thonjëzat, numër i plotë mund të ruajë vlerën ASCII e kapitalit A. Jini të kujdesshëm, though. Ju duhet rroba të vetme. Pa shenjat vetme Quote, përpilues do të shikojmë për një ndryshore quajtur A, dhe jo karakteri. Pastaj unë shtoni letër dhe një çelës, ruajtjen Shuma në rezultat variablave int. Edhe pse rezultati është i tipit të të dhënave integer, deklarata ime printf përdor % C placeholder për karaktere. Pra, programi printon karakterin lidhur me rezultatin integer. Dhe pasi ne shtypura integer formë si edhe duke përdorur% d, ne shohim numri si edhe. Deri tani ju mund të shihni se ne trajtojnë karaktere dhe integers, dhe anasjelltas. Le provë nga ASCIIMath një pak 25 herë më shumë duke përdorur si një kyç. Ne kemi marrë letër z. Tani ne përpiqemi 26. Ne duam që të merrni një letër, por në vend të kësaj ne kemi marrë një parantezë majtë. Pra, natyrisht, vetëm duke shtuar kyç në letër nuk do të bëjë. Ne kemi nevojë që të gjej një formulë për të përfunduar rreth alfabetit, doja tonë Shembulli në fillim e bëri. Një formulë për të Cezarit ndryshim është si më poshtë. c barabartë p plus k modulo 26. Mos harroni se modulo është një i dobishëm operacion që na jep pjesën e mbetur e ndarë nga një numër tjetër. Le të aplikojnë këtë formulë të thjeshtë letër tekst me një kyç të 2. Vlera ASCII i y është 89, e cila na jep 91 modulo 26, e cila është e barabartë me 13 - definitivisht nuk vlera ASCII e një, i cili eshte 67. Humor mua tani dhe të lëvizin larg nga Vlerat ASCII me një indeks alfabetik ku A është zero dhe Z eshte 25, do të thotë se Y është 24. 24 plus 2, modulo 6, na jep 26, modulo 26, 0, e cila eshte indeksi alfabetik i a. Pra, kjo formulë duket për të aplikuar për indeksi alfabetik i letrës dhe jo vlera e saj ASCII. Por ju të filloni me vlera ASCII. Dhe për të shtypur karakterin ciphertext, ju do të duhet vlerën e saj ASCII si. Është e deri tek ju, pastaj, të kuptoj se se si të kaloni prapa dhe me radhë. Pasi ju kuptoj se formulën e duhur për një karakter, të gjithë ju duhet të bëni po aplikojnë të njëjtën formulë për çdo letër në tekst të thjeshtë - vetëm në qoftë se letra është alfabetike, natyrisht. Dhe mos harroni se ju keni nevojë për të ruajtur rasti, e sipërme apo të poshtme, kjo është ajo ku isUpper dhe funksionet isLower përmend më herët do të vijë në volitshëm. Ju mund të keni dy formulat - një për letra uppercase dhe nje per Fjala. Pra isUpper një isLower do t'ju ndihmojë të përcaktuar se cila formulë për të aplikuar. Si mendoni ju aplikoni formulën tuaj për çdo karakter të vetëm në një varg? E pra, një varg është vetëm një Grup i karaktereve. Kështu që ju mund të hyni në çdo karakter nga grupimin e mbi çdo karakter në string në një për lak. Sa për gjendjen e juaj për lak, Funksioni strlen, për vargun gjatësia, do të vijë në volitshëm. Ajo merr një varg si input dhe gjatësinë e kthen atë varg. Sigurohuni që të përfshijë bibliotekën e duhur të përdorni funksionin length string. Dhe atje keni ciphertext tuaj. Emri im është Zamyla. Dhe [KODI folurit].