>> ROB BOWDEN: Hej, jag är Rob.
Och när i Rom, låt oss program som romarna gör.
Så, första vi behöver göra är att kontroll att se till att användaren faktiskt kommer in
det nummer som vi vill rotera varje karaktär genom att på kommandoraden.
>> Så kontrollerar vi.
Är argc lika med 2?
Om det inte innebär att användaren antingen inte ange numret på den
kommandoraden eller de in för många saker på kommandoraden, där
fall vi inte vet vad de ska göra med resten av sakerna.
Så, så länge som argc var två, kan vi fortsätta med resten av programmet.
>> Nu, kom ihåg att argv 1 är alltid en sträng.
Men vi vill behandla det som ett heltal.
Så använder vi atoi funktion som är Ovannämnda p uppsättning spec att omvandla
sträng argv 1 till ett heltal, och vi lagrar det i nyckeln.
Vi vill se till att heltal som angavs är inte negativt.
Och om det var, vi vill skriva ut det till användaren om att de inte är tillåtna
att göra det, och återvänder.
>> Så, nu har vi ett giltigt tal från användaren.
Men vi måste få en sträng från användare som vi vill kryptera.
Så vi brukade göra-while-slinga och använda få snöre för att få den här strängen från
användaren, och fortsätter att få strängen tills de faktiskt
Ange en giltig sträng.
>> När vi har den strängen, vi kan gå på för att kryptera den.
Så, är det för loop gör att kryptering.
Lägg märke till att vi iterera från i är lika med 0 t ända upp till i är lika med
n, där n är definierad som längden av vårt budskap, där budskapet är att
sträng som användaren angett.
>> Så vi iterera över alla tecken i strängen.
Och om ett tecken är versaler, då vi ska flytta det med hjälp av denna
formel, som vi ska komma till i en sekund.
Och om det var gemener, sedan vi ska flytta den med detta är
mycket liknande formel.
Och om det var varken en versal eller en liten bokstav - till exempel det
kan vara ett nummer eller en symbol - då vi kommer inte att göra något för det.
>> Så, vad är dessa formler?
Nå, hur ska vi flytta tecknet A?
Vi vill behandla tecknet A som antalet 0.
Och vi vill behandla tecknet B som antalet 1, och så vidare.
Det är den nollte och första tecknen i alfabetet och så vidare.
>> Så här är budskapet i minus A förment att ge oss den numeriska platsen för
bokstav i alfabetet.
Så om budskapet i är A, detta kommer att ge oss 0.
Nu vill vi lägga till att den nummer som användaren vill
rotera bokstav.
Så, om de kom in 3 och sedan om meddelandet Jag var A, kommer detta att ge oss 0 och plus
nyckel kommer att ge oss 3.
>> Så nu överväger vi den tredje plats i alfabetet.
Vi får se varför vi behöver mod av num bokstäver i en sekund.
Men slutligen, vill vi att lägga på den avslutar A igen för att flytta oss tillbaka in i
ASCII-värden för dessa tecken i stället för de numeriska ställen i
alfabet av dessa tecken.
>> Så, varför vi mod genom num bokstäver?
Kom ihåg att vi vill att linda runt från slutet av alfabetet till
början av alfabetet.
Så om användaren hade angett Z, sedan subtrahera A från det kommer att
ge oss 25.
Och om nyckeln var 3, då vi kommer att ha 28.
Men Z skulle linda runt till ABC, så 28 mod num bokstäver, som är hash definierade
som 26 kan förväntas, kommer att ge oss 2, där C är den andra bokstaven i
alfabetet, om du kommer ihåg att A är den nollte bokstav i alfabetet.
>> Så det är därför vi måste mod genom num bokstäver.
Nu måste vi göra exakt samma sak för små bokstäver, utom
kom ihåg att när vi har att göra med gemener, de har olika
ASCII-värden.
Och så måste vi dra ifrån och lägga på en att flytta ner från gemena
ASCII-värden och sedan tillbaka till ursprungliga gemena ASCII-värden.
>> Och slutligen, kommer att ge oss vår krypterat meddelande.
Och till slut, vi bara skriva ut det budskapet, och det är det.
Mitt namn är Rob, och var Caesar.