ROB: Ola, eu son Rob, e imos descifrar o programa Vigenère. Entón o primeiro que temos que facer é Comproba se o usuario inseriu o que esperabamos los para a liña de comandos. Entón, se argc non é 2, que significa tanto o usuario non entrou na cadea de nós quere usar como a nosa cifrado corda, ou entrou moitas cousas. E nós non sabemos o que facer coas outras cousas. Por iso, dicir-lles o que eles debería entrar. E volvemos. Agora, admitindo que argc era 2, podemos continuar co resto do programa. Nós alias nome de argv [1] para a palabra clave variable. De xeito que non ten por usar o nome argv [1] durante todo o resto do programa. E quizais nós imos esquecer o que que significa e así por diante. Contrasinal é un nome moito máis agradable. E nós imos inmediatamente coller a lonxitude da nosa contrasinal aquí. OK, entón agora queremos comprobar que nosa palabra clave é realmente correcto. O contrasinal que usan para cifrar cordas debe só ser alfabética caracteres. Se o usuario introduciu non alfabética caracteres, hai que dicir, contrasinal debe conter só un medio Z e despois volver. Polo tanto, este lazo for sobre todo personaxes da nosa palabra clave, comprobando que, se a persoa non está en orde alfabética, a continuación, necesitamos imprimir este aviso. Agora, unha vez que chegar a este punto, sabemos que a cadea debe ser correcta. O contrasinal debe ser correcta. E agora temos que pasar a mensaxe de o usuario que queiramos cifrar con esa frase clave. Así, para obter esta mensaxe, temos un facer mentres loop que vai continuamente obter unha cadea do usuario ata que eles entran nunha secuencia válida. Continuando, vemos aquí a esta variable, int nun_letters_seen. A ver por iso que necesitamos que en un segundo. Pero este ciclo for vai facer unha iteración i é igual a 0 todo o camiño ata i é igual a n, o que significa que estamos interactuar sobre todo o posible personaxes da nosa mensaxe. Porque queremos cifrar todo os personaxes da nosa mensaxe. Entón, teña en conta o que facemos se (isalphamessage [I] porque nós non queremos para cifrar caracteres que non están alfabética. Se hai símbolos, espazos, ou números, non Quere cifrar. Agora, supoñendo que está en orde alfabética, primeiro quero descubrir o que realmente quere cifrar a mensaxe a usar. Entón, o que quero dicir con iso? Imos supor que a frase clave o usuario inseriu foi ABC. Iso é o que estamos a usar para cifrar. Agora, inxenuamente, pensamos que significa que queremos cifrar o primeiro carácter da mensaxe por 0, xa que un medio xirando o personaxe por 0. Queremos cifrar o segundo personaxe por 1, terceiro personaxe por 2, o cuarto carácter por 0, o quinto por 1, o sexto por 2, e así por diante. Pero lembre que queremos saltar espazos e símbolos e números. Isto significa que, se o usuario entrara Ola mundo como a mensaxe que quere cifrar e logo queremos cifrar o h por 0 correspondente á unha, o e por 1, o l por 2, a l por 0, o o en 1. Queremos saltar o espazo, cifrado o w por 2, oo por 0, 1, 2, 0. Entón, teña en conta, se non tivésemos pulado o espazo, entón teriamos cifrado a w por 0 e acabou con a cadea incorrecta. OK, iso é o que necesitamos a variable num_letters_seen para. Se nós estabamos indo para cifrar usando este método, que non ignora símbolos, espazos e números, entón nós podería usar só a variable i como o que ao índice na nosa frase clave con. Necesitamos utilizar num_letters_seen para manter pista do lugar real no frase clave que queremos índice. Entón, aquí, se a palabra clave que temos, se num_letter_seen keyword_length mod, entón por que necesitamos mod por lonxitude de contrasinal? Ben, Ola mundo era un bo exemplo. Se a palabra clave é abc, entón necesitamos cifrar continuamente por un entón b logo c, logo enrole arredor de volta, a, b, c, a, b, c. Por iso, necesitamos mod pola lonxitude contrasinal a fin de envolve-volta. Entón, se isto é unha letra maiúscula, entón queremos cifrar polo posición de que letra do alfabeto, que temos só subtraindo a capital de A. E do mesmo xeito, a letras minúsculas, nós pode obter a clave que queremos por subtraindo a minúscula a. Así, independentemente de a carta na frase clave era unha capital ou letra minúscula, imos cifrar polo mesmo importe. Agora que temos a nosa chave, vemos aquí, que se a mensaxe é un i maiúscula personaxe, entón queremos calcular a posición na que o alfabeto de personaxe, engadir a nosa clave para iso, enrole atrás en torno de xeito que, se pasou por un z imos voltar a, b, c, e así por diante. Entón, finalmente, engadir de novo sobre o capital A. Entón, cambiamos ao seu [? ASCII?] variedade destes caracteres no canto do posición numérica no alfabeto destes personaxes. E nós facemos o mesmo para caracteres minúsculos. Excepto queremos restar minúsculas un e engadir lo de volta en no final, en minúsculas a. Teña en conta que só é num_letter_seen incrementado se a mensaxe que eu estaba alfabética. É así que saltar espazos, símbolos e números na nosa frase clave, xa que num_letter_seen é o que estamos a usar ao índice na nosa contrasinal. Finalmente, ao final, xa que a mensaxe i foi cifrado, nós imprimir mensaxe i. E é iso. O meu nome é Rob. E esta é Vigenère. [Música tocando]