1 00:00:00,000 --> 00:00:11,960 2 00:00:11,960 --> 00:00:13,750 >> ROB BOWDEN: Sveiki, aš esu Robas. 3 00:00:13,750 --> 00:00:17,360 Ir kai Romoje, tegul programa kaip romėnai daryti. 4 00:00:17,360 --> 00:00:22,280 Taigi, pirmas dalykas, kurį reikia padaryti, tai patikrinti įsitikinkite, kad vartotojas iš tiesų įrašytas 5 00:00:22,280 --> 00:00:26,670 skaičius, kad mes norime pasukti kiekvienas požymis komandų eilutėje. 6 00:00:26,670 --> 00:00:27,740 >> Taigi, mes tikriname. 7 00:00:27,740 --> 00:00:30,180 Ar argc lygi 2? 8 00:00:30,180 --> 00:00:34,190 Jei taip nėra, tai reiškia, kad vartotojas arba nebuvo įvesti numerį 9 00:00:34,190 --> 00:00:37,770 komandinės eilutės, arba jie atvyko per daug viskas komandinėje eilutėje, kurioje 10 00:00:37,770 --> 00:00:40,560 atveju mes nežinome, ką daryti su dalykų poilsio. 11 00:00:40,560 --> 00:00:45,750 Taigi, kiek argc buvo du, mes galime tęsti programos dalimi. 12 00:00:45,750 --> 00:00:49,610 >> Dabar, atminkite, kad argv 1 visada eilutė. 13 00:00:49,610 --> 00:00:52,490 Bet mes norime laikyti jį kaip sveikasis skaičius. 14 00:00:52,490 --> 00:00:57,550 Taigi, mes naudojame atoi funkciją, kad yra pirmiau minėtus p rinkinys spec konvertuoti 15 00:00:57,550 --> 00:01:02,330 styginių argv 1 iki sveikojo skaičiaus, ir mes saugome, kad raktą. 16 00:01:02,330 --> 00:01:06,050 Mes norime įsitikinti, kad sveikasis skaičius , kuris buvo įrašytas nėra neigiama. 17 00:01:06,050 --> 00:01:09,490 Ir jei ji buvo, mes norime spausdinti, kad į vartotojo, kad jie negali 18 00:01:09,490 --> 00:01:11,980 tai padaryti, ir atgal. 19 00:01:11,980 --> 00:01:15,100 >> Taigi, dabar mes turime galios skaičius nuo naudotojo. 20 00:01:15,100 --> 00:01:19,780 Bet mes turime gauti eilutę iš vartotojo, kad mes norime užšifruoti. 21 00:01:19,780 --> 00:01:25,340 Taigi mes naudojamas do-while cikle ir naudoti gauti styginių gauti šią eilutę iš 22 00:01:25,340 --> 00:01:29,190 vartotojas, ir toliau gauti eilutę kol jie iš tikrųjų 23 00:01:29,190 --> 00:01:31,270 įvesti galiojantį eilutę. 24 00:01:31,270 --> 00:01:34,400 >> Kai mes turime tą eilutę, mes gali eiti užšifruoti ją. 25 00:01:34,400 --> 00:01:38,120 Taigi, tai už kilpa daro , kad šifravimas. 26 00:01:38,120 --> 00:01:43,250 Atkreipkite dėmesį, kad mes Iteracja iš i lygus 0 t visą kelią iki i lygių 27 00:01:43,250 --> 00:01:47,790 n, kur n yra apibrėžiamas kaip ilgio mūsų žinia, kur žinutė yra 28 00:01:47,790 --> 00:01:50,260 eilutė, įrašytas vartotojas. 29 00:01:50,260 --> 00:01:54,330 >> Taigi mes Iteracja virš visų simbolių eilutės. 30 00:01:54,330 --> 00:01:59,740 Ir jei simbolis yra didžioji, tada mes ketiname perkelti jį naudojant šią 31 00:01:59,740 --> 00:02:01,860 formulė, kurią mes jums gauti per sekundę. 32 00:02:01,860 --> 00:02:05,260 Ir jei ji buvo mažosiomis raidėmis, tada mes perkelti jį naudojant tai 33 00:02:05,260 --> 00:02:07,290 labai panaši formulė. 34 00:02:07,290 --> 00:02:10,850 Ir jei ji nebuvo nei didžiosios, nei mažoji raidė - pavyzdžiui, ji 35 00:02:10,850 --> 00:02:15,370 gali būti skaičius arba simbolis - tada mes nesiruošia nieko daryti su juo. 36 00:02:15,370 --> 00:02:18,220 >> Taigi, kas yra šios formulės? 37 00:02:18,220 --> 00:02:22,090 Na, kaip mes perkelti charakterį? 38 00:02:22,090 --> 00:02:27,250 Mes norime, kad gydyti simbolį Kaip skaičius 0. 39 00:02:27,250 --> 00:02:30,710 Ir mes norime elgtis simbolį B kaip numeris 1, ir taip toliau. 40 00:02:30,710 --> 00:02:35,170 Tai nulinis ir pirmieji ženklai abėcėlės ir pan. 41 00:02:35,170 --> 00:02:42,900 >> Taigi čia, pranešimų i atėmus turėtų mums skaitinę vieta 42 00:02:42,900 --> 00:02:44,400 raidė abėcėlėje. 43 00:02:44,400 --> 00:02:48,080 Taigi, jei pranešimą i tai ketina duoti mums 0. 44 00:02:48,080 --> 00:02:52,880 Dabar mes norime pridėti prie to skaičius, kad vartotojas nori 45 00:02:52,880 --> 00:02:54,840 pasukti laiškas. 46 00:02:54,840 --> 00:03:03,280 Taigi, jei jie atvyko 3, tada, jei žinutė buvau, tai leis mums 0 ir plius 47 00:03:03,280 --> 00:03:05,400 raktas duos mums 3. 48 00:03:05,400 --> 00:03:09,450 >> Taigi dabar mes svarstome Trečiąją vietą abėcėlėje. 49 00:03:09,450 --> 00:03:12,810 Pamatysime, kodėl mums reikia mod pagal NUM raidžių per sekundę. 50 00:03:12,810 --> 00:03:18,700 Bet galų gale, mes norime pridėti prie vėl baigti perkelti mus atgal į 51 00:03:18,700 --> 00:03:22,020 ASCII vertės šių simbolių vietoj skaičiaus vietų 52 00:03:22,020 --> 00:03:24,260 abėcėlė iš šių simbolių. 53 00:03:24,260 --> 00:03:26,580 >> Taigi, kodėl mes mod NUM laiškus? 54 00:03:26,580 --> 00:03:29,960 Nepamirškite, kad mes norime, į kuriuos vyniojami aplink nuo iki abėcėlės pabaigos 55 00:03:29,960 --> 00:03:31,470 pradedant abėcėlės. 56 00:03:31,470 --> 00:03:38,530 Taigi, jei vartotojas buvo įrašytas Z, tada atimant iš, kad ketina 57 00:03:38,530 --> 00:03:40,520 mums 25. 58 00:03:40,520 --> 00:03:44,800 Ir jei raktas buvo 3, tada mes ketiname turėti 28. 59 00:03:44,800 --> 00:03:53,000 Bet Z turi apvynioti ABC, taigi 28 mod num raidės, kuri yra maišos apibrėžta 60 00:03:53,000 --> 00:04:01,890 kaip 26 galima tikėtis, ketina suteikti mums 2, kur C yra antroji raidė 61 00:04:01,890 --> 00:04:05,880 abėcėlė, jei žinote, kad yra Zeroth abėcėlės raidė. 62 00:04:05,880 --> 00:04:09,210 >> Štai kodėl mes turime mod NUM raidėmis. 63 00:04:09,210 --> 00:04:13,540 Dabar, mes turime padaryti tą patį tiksliai dalykas už mažosiomis raidėmis, išskyrus 64 00:04:13,540 --> 00:04:17,240 Atminkite, kad kai mes susiduriame su mažosiomis raidėmis, jie skiriasi 65 00:04:17,240 --> 00:04:18,579 ASCII vertės. 66 00:04:18,579 --> 00:04:24,550 Ir todėl mes turime atimti ir pridėti perkelti jį iš mažosios 67 00:04:24,550 --> 00:04:30,020 ASCII vertės ir tada atgal į originalus mažosiomis ASCII vertės. 68 00:04:30,020 --> 00:04:33,140 >> Ir, pagaliau, kad bus mums mūsų užšifruotas. 69 00:04:33,140 --> 00:04:37,780 Ir, galų gale, mes tiesiog atsispausdinti kad pranešimą, ir viskas. 70 00:04:37,780 --> 00:04:39,875 Mano vardas yra Rob ir buvo Cezaris. 71 00:04:39,875 --> 00:04:49,856