1 00:00:00,000 --> 00:00:11,960 2 00:00:11,960 --> 00:00:13,750 >> ROB BOWDEN: Hej, jag är Rob. 3 00:00:13,750 --> 00:00:17,360 Och när i Rom, låt oss program som romarna gör. 4 00:00:17,360 --> 00:00:22,280 Så, första vi behöver göra är att kontroll att se till att användaren faktiskt kommer in 5 00:00:22,280 --> 00:00:26,670 det nummer som vi vill rotera varje karaktär genom att på kommandoraden. 6 00:00:26,670 --> 00:00:27,740 >> Så kontrollerar vi. 7 00:00:27,740 --> 00:00:30,180 Är argc lika med 2? 8 00:00:30,180 --> 00:00:34,190 Om det inte innebär att användaren antingen inte ange numret på den 9 00:00:34,190 --> 00:00:37,770 kommandoraden eller de in för många saker på kommandoraden, där 10 00:00:37,770 --> 00:00:40,560 fall vi inte vet vad de ska göra med resten av sakerna. 11 00:00:40,560 --> 00:00:45,750 Så, så länge som argc var två, kan vi fortsätta med resten av programmet. 12 00:00:45,750 --> 00:00:49,610 >> Nu, kom ihåg att argv 1 är alltid en sträng. 13 00:00:49,610 --> 00:00:52,490 Men vi vill behandla det som ett heltal. 14 00:00:52,490 --> 00:00:57,550 Så använder vi atoi funktion som är Ovannämnda p uppsättning spec att omvandla 15 00:00:57,550 --> 00:01:02,330 sträng argv 1 till ett heltal, och vi lagrar det i nyckeln. 16 00:01:02,330 --> 00:01:06,050 Vi vill se till att heltal som angavs är inte negativt. 17 00:01:06,050 --> 00:01:09,490 Och om det var, vi vill skriva ut det till användaren om att de inte är tillåtna 18 00:01:09,490 --> 00:01:11,980 att göra det, och återvänder. 19 00:01:11,980 --> 00:01:15,100 >> Så, nu har vi ett giltigt tal från användaren. 20 00:01:15,100 --> 00:01:19,780 Men vi måste få en sträng från användare som vi vill kryptera. 21 00:01:19,780 --> 00:01:25,340 Så vi brukade göra-while-slinga och använda få snöre för att få den här strängen från 22 00:01:25,340 --> 00:01:29,190 användaren, och fortsätter att få strängen tills de faktiskt 23 00:01:29,190 --> 00:01:31,270 Ange en giltig sträng. 24 00:01:31,270 --> 00:01:34,400 >> När vi har den strängen, vi kan gå på för att kryptera den. 25 00:01:34,400 --> 00:01:38,120 Så, är det för loop gör att kryptering. 26 00:01:38,120 --> 00:01:43,250 Lägg märke till att vi iterera från i är lika med 0 t ända upp till i är lika med 27 00:01:43,250 --> 00:01:47,790 n, där n är definierad som längden av vårt budskap, där budskapet är att 28 00:01:47,790 --> 00:01:50,260 sträng som användaren angett. 29 00:01:50,260 --> 00:01:54,330 >> Så vi iterera över alla tecken i strängen. 30 00:01:54,330 --> 00:01:59,740 Och om ett tecken är versaler, då vi ska flytta det med hjälp av denna 31 00:01:59,740 --> 00:02:01,860 formel, som vi ska komma till i en sekund. 32 00:02:01,860 --> 00:02:05,260 Och om det var gemener, sedan vi ska flytta den med detta är 33 00:02:05,260 --> 00:02:07,290 mycket liknande formel. 34 00:02:07,290 --> 00:02:10,850 Och om det var varken en versal eller en liten bokstav - till exempel det 35 00:02:10,850 --> 00:02:15,370 kan vara ett nummer eller en symbol - då vi kommer inte att göra något för det. 36 00:02:15,370 --> 00:02:18,220 >> Så, vad är dessa formler? 37 00:02:18,220 --> 00:02:22,090 Nå, hur ska vi flytta tecknet A? 38 00:02:22,090 --> 00:02:27,250 Vi vill behandla tecknet A som antalet 0. 39 00:02:27,250 --> 00:02:30,710 Och vi vill behandla tecknet B som antalet 1, och så vidare. 40 00:02:30,710 --> 00:02:35,170 Det är den nollte och första tecknen i alfabetet och så vidare. 41 00:02:35,170 --> 00:02:42,900 >> Så här är budskapet i minus A förment att ge oss den numeriska platsen för 42 00:02:42,900 --> 00:02:44,400 bokstav i alfabetet. 43 00:02:44,400 --> 00:02:48,080 Så om budskapet i är A, detta kommer att ge oss 0. 44 00:02:48,080 --> 00:02:52,880 Nu vill vi lägga till att den nummer som användaren vill 45 00:02:52,880 --> 00:02:54,840 rotera bokstav. 46 00:02:54,840 --> 00:03:03,280 Så, om de kom in 3 och sedan om meddelandet Jag var A, kommer detta att ge oss 0 och plus 47 00:03:03,280 --> 00:03:05,400 nyckel kommer att ge oss 3. 48 00:03:05,400 --> 00:03:09,450 >> Så nu överväger vi den tredje plats i alfabetet. 49 00:03:09,450 --> 00:03:12,810 Vi får se varför vi behöver mod av num bokstäver i en sekund. 50 00:03:12,810 --> 00:03:18,700 Men slutligen, vill vi att lägga på den avslutar A igen för att flytta oss tillbaka in i 51 00:03:18,700 --> 00:03:22,020 ASCII-värden för dessa tecken i stället för de numeriska ställen i 52 00:03:22,020 --> 00:03:24,260 alfabet av dessa tecken. 53 00:03:24,260 --> 00:03:26,580 >> Så, varför vi mod genom num bokstäver? 54 00:03:26,580 --> 00:03:29,960 Kom ihåg att vi vill att linda runt från slutet av alfabetet till 55 00:03:29,960 --> 00:03:31,470 början av alfabetet. 56 00:03:31,470 --> 00:03:38,530 Så om användaren hade angett Z, sedan subtrahera A från det kommer att 57 00:03:38,530 --> 00:03:40,520 ge oss 25. 58 00:03:40,520 --> 00:03:44,800 Och om nyckeln var 3, då vi kommer att ha 28. 59 00:03:44,800 --> 00:03:53,000 Men Z skulle linda runt till ABC, så 28 mod num bokstäver, som är hash definierade 60 00:03:53,000 --> 00:04:01,890 som 26 kan förväntas, kommer att ge oss 2, där C är den andra bokstaven i 61 00:04:01,890 --> 00:04:05,880 alfabetet, om du kommer ihåg att A är den nollte bokstav i alfabetet. 62 00:04:05,880 --> 00:04:09,210 >> Så det är därför vi måste mod genom num bokstäver. 63 00:04:09,210 --> 00:04:13,540 Nu måste vi göra exakt samma sak för små bokstäver, utom 64 00:04:13,540 --> 00:04:17,240 kom ihåg att när vi har att göra med gemener, de har olika 65 00:04:17,240 --> 00:04:18,579 ASCII-värden. 66 00:04:18,579 --> 00:04:24,550 Och så måste vi dra ifrån och lägga på en att flytta ner från gemena 67 00:04:24,550 --> 00:04:30,020 ASCII-värden och sedan tillbaka till ursprungliga gemena ASCII-värden. 68 00:04:30,020 --> 00:04:33,140 >> Och slutligen, kommer att ge oss vår krypterat meddelande. 69 00:04:33,140 --> 00:04:37,780 Och till slut, vi bara skriva ut det budskapet, och det är det. 70 00:04:37,780 --> 00:04:39,875 Mitt namn är Rob, och var Caesar. 71 00:04:39,875 --> 00:04:49,856