1 00:00:00,000 --> 00:00:11,960 2 00:00:11,960 --> 00:00:13,750 >> ROB BOWDEN: Hei, jeg er Rob. 3 00:00:13,750 --> 00:00:17,360 Og når du er i Roma, la oss program som romerne gjør. 4 00:00:17,360 --> 00:00:22,280 Så, første vi må gjøre er å sjekke å sørge for at brukeren faktisk inngikk 5 00:00:22,280 --> 00:00:26,670 nummeret som vi ønsker å rotere hver tegnet av på kommandolinjen. 6 00:00:26,670 --> 00:00:27,740 >> Så sjekker vi. 7 00:00:27,740 --> 00:00:30,180 Er argc lik 2? 8 00:00:30,180 --> 00:00:34,190 Hvis det ikke er det, betyr at brukeren enten har ikke skrevet inn nummeret på 9 00:00:34,190 --> 00:00:37,770 kommandolinje eller de tastet for mange ting på kommandolinjen, der 10 00:00:37,770 --> 00:00:40,560 tilfelle vi ikke vet hva jeg skal gjøre med resten av tingene. 11 00:00:40,560 --> 00:00:45,750 Så, så lenge argc var to, kan vi fortsette med resten av programmet. 12 00:00:45,750 --> 00:00:49,610 >> Nå, husk at argv 1 er alltid en streng. 13 00:00:49,610 --> 00:00:52,490 Men vi ønsker å behandle det som et heltall. 14 00:00:52,490 --> 00:00:57,550 Så bruker vi atoi funksjon som er nevnte p sett spec å konvertere 15 00:00:57,550 --> 00:01:02,330 string argv 1 til et heltall, og vi lagre det i nøkkelen. 16 00:01:02,330 --> 00:01:06,050 Vi vil være sikker på at heltallet som ble inngått er ikke negativt. 17 00:01:06,050 --> 00:01:09,490 Og hvis det var, vi ønsker å skrive ut denne til brukeren om at de ikke har lov 18 00:01:09,490 --> 00:01:11,980 å gjøre det, og kommer tilbake. 19 00:01:11,980 --> 00:01:15,100 >> Så nå har vi en gyldig nummer fra brukeren. 20 00:01:15,100 --> 00:01:19,780 Men vi trenger å få en streng fra bruker som vi ønsker å kryptere. 21 00:01:19,780 --> 00:01:25,340 Så vi pleide å gjøre-while løkke og bruke få streng for å få denne strengen fra 22 00:01:25,340 --> 00:01:29,190 bruker, og fortsette å få streng før de faktisk 23 00:01:29,190 --> 00:01:31,270 angi en gyldig streng. 24 00:01:31,270 --> 00:01:34,400 >> Når vi har denne strengen, vi kan gå på for å kryptere den. 25 00:01:34,400 --> 00:01:38,120 Så, er dette for loop å gjøre at kryptering. 26 00:01:38,120 --> 00:01:43,250 Legg merke til at vi gjentar fra i lik 0 t hele veien opp til i. likemenn 27 00:01:43,250 --> 00:01:47,790 n, hvor n er definert som lengden budskapet, hvor meldingen er 28 00:01:47,790 --> 00:01:50,260 streng som den som brukeren. 29 00:01:50,260 --> 00:01:54,330 >> Så vi gjentar over alt tegn i strengen. 30 00:01:54,330 --> 00:01:59,740 Og hvis en karakter er store bokstaver, deretter vi kommer til å skifte den ved hjelp av dette 31 00:01:59,740 --> 00:02:01,860 formel, som vi vil få til i et sekund. 32 00:02:01,860 --> 00:02:05,260 Og hvis det ble små bokstaver, deretter vi vil skifte den ved hjelp av dette er 33 00:02:05,260 --> 00:02:07,290 svært lik formel. 34 00:02:07,290 --> 00:02:10,850 Og hvis det var verken en stor bokstav eller en liten bokstav - for eksempel det 35 00:02:10,850 --> 00:02:15,370 kunne være et tall eller et symbol - så vi kommer ikke til å gjøre noe til det. 36 00:02:15,370 --> 00:02:18,220 >> Så, hva er disse formlene? 37 00:02:18,220 --> 00:02:22,090 Vel, hvordan skal vi skifte karakter A? 38 00:02:22,090 --> 00:02:27,250 Vi ønsker å behandle tegnet En som nummer 0. 39 00:02:27,250 --> 00:02:30,710 Og vi ønsker å behandle tegnet B som nummer 1, og så videre. 40 00:02:30,710 --> 00:02:35,170 Det er zeroth og første tegn i alfabetet, og så videre. 41 00:02:35,170 --> 00:02:42,900 >> Så her er meldingen jeg minus En antatt for å gi oss den numeriske stedet for 42 00:02:42,900 --> 00:02:44,400 bokstav i alfabetet. 43 00:02:44,400 --> 00:02:48,080 Så hvis meldingen jeg er A, dette kommer til å gi oss 0. 44 00:02:48,080 --> 00:02:52,880 Nå ønsker vi å legge til at nummer som brukeren ønsker å 45 00:02:52,880 --> 00:02:54,840 rotere brevet etter. 46 00:02:54,840 --> 00:03:03,280 Så, hvis de kom inn 3, så hvis meldingen Jeg var, vil dette gi oss 0 og pluss 47 00:03:03,280 --> 00:03:05,400 Nøkkelen vil gi oss tre. 48 00:03:05,400 --> 00:03:09,450 >> Så nå er vi vurderer tredje plass i alfabetet. 49 00:03:09,450 --> 00:03:12,810 Vi får se hvorfor vi trenger å mod etter num bokstaver i et sekund. 50 00:03:12,810 --> 00:03:18,700 Men til slutt, ønsker vi å legge seg på ende A igjen for å skifte oss tilbake inn i 51 00:03:18,700 --> 00:03:22,020 ASCII-verdier for disse tegnene i stedet for de numeriske steder i 52 00:03:22,020 --> 00:03:24,260 alfabetet av disse tegnene. 53 00:03:24,260 --> 00:03:26,580 >> Så, hvorfor vi mod av num bokstaver gjør? 54 00:03:26,580 --> 00:03:29,960 Husk at vi ønsker å vikle rundt fra enden av alfabetet til 55 00:03:29,960 --> 00:03:31,470 begynnelsen av alfabetet. 56 00:03:31,470 --> 00:03:38,530 Så hvis brukeren hadde angitt Z, deretter trekke fra A fra som kommer til å 57 00:03:38,530 --> 00:03:40,520 gi oss 25. 58 00:03:40,520 --> 00:03:44,800 Og hvis nøkkelen var tre, deretter vi kommer til å ha 28. 59 00:03:44,800 --> 00:03:53,000 Men Z bør brytes rundt til ABC, så 28 mod num bokstaver, som er hash definerte 60 00:03:53,000 --> 00:04:01,890 som 26 kan forventes, kommer til å gi oss to, der C er den andre bokstaven i 61 00:04:01,890 --> 00:04:05,880 alfabetet, hvis du husker at A er zeroth bokstaven i alfabetet. 62 00:04:05,880 --> 00:04:09,210 >> Så det er derfor vi trenger å mod av num bokstaver. 63 00:04:09,210 --> 00:04:13,540 Nå trenger vi å gjøre de samme ting for små bokstaver, unntatt 64 00:04:13,540 --> 00:04:17,240 husk at når vi har å gjøre med små bokstaver, de har forskjellig 65 00:04:17,240 --> 00:04:18,579 ASCII-verdier. 66 00:04:18,579 --> 00:04:24,550 Og så må vi trekke fra og legge til på en å skifte den ned fra små bokstaver 67 00:04:24,550 --> 00:04:30,020 ASCII-verdier og deretter tilbake til opprinnelige små ASCII-verdier. 68 00:04:30,020 --> 00:04:33,140 >> Og til slutt, som vil gi oss vår kryptert melding. 69 00:04:33,140 --> 00:04:37,780 Og til slutt, vi bare skrive ut denne meldingen, og det er det. 70 00:04:37,780 --> 00:04:39,875 Mitt navn er Rob, og var Caesar. 71 00:04:39,875 --> 00:04:49,856