ZAMYLA CHAN: Parabéns en rematar o seu primeiro par de programas en C. Sei que a súa primeira incursión no Sintaxe C pode ser asustado. Pero asegura-lle, ao final do Por suposto, vai ser capaz de ollar para o primeiro par de competencias e completa-las en poucos minutos. Agora que está quedando máis familiarizado coa sintaxe, imos comezar a César. En César, o usuario deberá presentar un clave número enteiro como unha liña de comandos argumento, a continuación, escriba unha chaira mensaxes de texto na ventá. O programa pode entón cifrar o texto e impresión súa mensaxe de texto cifrado. Cifraxe de César é moi sinxelo. Desprazar cada letra, na súa texto, pola chave. Como resultado, é tamén moi inseguro. Pero a implementación César introducirá nos ASCIIMath e matriz de datos estruturas. Nós imos chegar a máis complexa cifras posteriores. Cunha clave de César de 2, letra A en texto sería representado por letra C en texto cifrado, por C é de dúas letras tras A. B sería representado por D e C por E. Rumbo a fin do alfabeto, W é representado por Y e X, Y Z. Pero Non ten dúas letras para logo, de xeito as cifras implica o alfabeto. Y en texto simple é, polo tanto, representado por Un de texto cifrado, e Z por B. Pode axudar a ver a César como Cypher unha roda alfabeto continua. Para codificar o seu texto, o usuario entrará dous argumentos na liña de comandos - . / Caesar seguido por unha chave. Como sempre, non podemos confiar en que o usuario completo para entrar entrada que facer sentido para o noso programa. Entón nós imos ter que validar a súa entrada de liña de comandos. En vez de usar int void main, estamos usar int main, argc int, cadea argv. O argc variable enteira representa o número de argumentos pasados ​​para na liña de comandos. E argv é un array, ou pensar nel como unha lista, dos argumentos pasados ​​dentro Así, para César, como é que imos validar entrada do usuario? Ben, eles só deben estar entrando dous argumentos de liña de comandos - . / Caesar e unha clave. Entón, se non é argc 2, o que significa que ou eles esqueceron a clave e só entrou. / Caesar, ou entrou varias claves. Se este é o caso, entón vai quere imprimir instrucións e saír do programa. Eles van ter para tentar de novo a partir da liña de comandos. Pero aínda se argc é 2, vai que comprobar se darlle unha clave válida. Para Caesar, precisa un número enteiro. Pero argv é unha matriz de cadeas. Como accede a clave? Un rápido ollar para as matrices - estruturas de datos que posúen múltiple Os valores de datos do mesmo tipo. As inscricións son con índice cero, o que significa que o primeiro elemento é o índice cero e este último elemento é o tamaño do índice menos 1, en que tamaño é o número de elementos na matriz. Se eu declarei unha nova caixa de correo matriz de cadea de lonxitude 3, visual, el coma este. Tres recipientes para cordas , De xeito conxunto. Para acceder a calquera elemento, escribe o nome da matriz e logo, indican o índice entre corchetes. Aquí, vou asignar un valor a cada elemento, así como eu faría calquera outra variable cadea. Entón, para acceder os nosos argumentos de liña de comandos, todo o que temos que facer é acceder o elemento de dereito da matriz argv. Se o usuario entrou Team. / Decolagem Foguete no terminal, argv 0 sería ser. / despegamento. argv sería Team, e arg2 sería foguete. Agora que podemos acceder a nosa chave, aínda temos que facer seguro de que é correcta. Necesitamos convertelo en un número enteiro. Pero non podemos só lanzar como fixemos anteriormente. Por sorte, para a función A Y coida isto para nós, e mesmo retorna 0 a cadea non se pode converter a un número enteiro. Correspóndelle a vostede, con todo, para dicir o usuario por que non vai que o programa continuar. Gardar o resultado dun de Y nunha enteiro, e alí ten a súa clave. A seguinte parte é simple. Solicitar ao usuario o texto simple, que será de datos tipo cadea. Por sorte para nós, todos os usuarios inseridos cordas son válidos. Agora que temos todos os medios necesarios do usuario, é tempo para nós codificar a mensaxe. O concepto de César é simple o suficiente para entender. Pero como é que o ordenador sabe que letras vir despois do outro? Aquí é onde a táboa ASCII vén dentro Cada personaxe ten un número enteiro número asociado a el. A capital é 65. Capital B é 66. Minúsculas un é 97. Minúsculas b é 98. Pero os personaxes non se limitan para só números alfabéticos. Por exemplo, o símbolo @ 64 é o número ASCII. Antes de xestionar toda a corda, imos finxir que nós só temos que cambiar un personaxe. Ben, nós só queremos cambiar real letras no texto simple, non caracteres ou números. Entón o primeiro que imos querer comprobar é se o personaxe está en alfabeto. O isalpha función fai isto para nós e devolve un valor booleano - verdadeiro se os personaxes é unha carta, falso en caso contrario. Outras dúas funcións útiles son isupper e islower, con nomes auto-explicativos. Eles retornan certo se o carácter dado é maiúscula ou minúscula, respectivamente. Xa que son booleanos, son útil para usar como condicións. Se isalpha retorna certo, vai ter para cambiar o personaxe pola chave. Entón, imos abrir o ASCIIMath e facer un pouco de matemáticas ASCII. O uso é moi semellante ao do uso a César e leva nunha clave no liña de comandos. Se eu executar ASCIIMath 5, parece engadir Cinco a un, dándome a letra f, e mostrando o valor ASCII. Entón, imos dar un ollo no programa. Pode preguntar, aquí, por carta é un número enteiro, cando está claramente, tamén, unha carta. Acontece que os personaxes e enteiros son intercambiábeis. Ao poñer a letra A en un único comiñas, o enteiro pode almacenar o valor ASCII do capital A. Teña coidado, porén. Debe das roupas simples. Sen as comiñas simples, o compilador estaba a buscar unha variable chamado A, e non o personaxe. Entón eu podo engadir carta e unha clave, almacenando o suma das variables int resultado. Aínda resultado é do tipo de datos enteiro, a miña declaración printf utiliza o % C espazo reservado para os personaxes. Así, o programa imprime o carácter relacionado co resultado enteiro. E xa que impreso o número enteiro forma ben usando% d vemos o número ben. Entón, agora pode ver que nós tratar personaxes e números enteiros, e viceversa. Imos proba fóra ASCIIMath algúns máis veces a usar 25 como unha chave. Estivemos coa letra z. Agora imos tratar de 26. Queremos chegar a letra a, mais en vez diso temos un soporte esquerdo. Entón, obviamente, só engadindo o clave para a carta non vai facer. Necesitamos descubrir unha fórmula para embrulhar todo o alfabeto, como o noso exemplo, no inicio fixo. A fórmula para o César cambio é como segue. c é igual p máis k modulo 26. Lembre que modulo é un instrumento útil operación que nos dá a restante de dividir un número por outro. Imos aplicar esta fórmula para a chaira carta de texto con unha chave de 2. O valor ASCII y é 89, que ofrécenos 91 modulo 26, o que equivale a 13 - definitivamente non é o valor ASCII de a, que é 67. Humor me agora e afastarse do Os valores ASCII para un índice alfabético onde A é cero e Z é 25, o que significa que Y é 24. 24 + 2, módulo 6, dános 26, modulo 26, 0, que é o índice alfabético de un. Polo tanto, esta fórmula parece aplicarse ao índice alfabético de carta e non o seu valor ASCII. Pero comeza cos valores ASCII. E para imprimir o carácter cifrado, vai ter o seu valor ASCII tamén. Correspóndelle a vostede, entón, para descubrir como cambiar e cara atrás. Despois de descubrir a fórmula correcta a un personaxe, o único que hai que facer aplicarse a mesma fórmula para cada letra no texto - só se a letra está en orde alfabética, claro. E lembre de que precisa para preservar o caso, superior ou inferior, que é onde as funcións IsLower isupper e mencionado anteriormente virá a cadra. Pode ter dúas fórmulas - un para maiúsculas e un para minúsculas. Entón isupper un eMinusculo pode axudar determinar a fórmula que se aplica. Como aplica a fórmula para cada único carácter nunha cadea? Ben, unha cadea é só un matriz de caracteres. Así, pode acceder a cada personaxe, agrupación sobre cada personaxe do cordas en un loop for. En canto á condición de loop for, a función strlen, pola corda lonxitude, virá a cadra. Leva nunha cadea como entrada e devolve a lonxitude desta corda. Asegúrese de incluír a biblioteca dereita para utilizar a función lonxitude da corda. E aí tes o texto cifrado. O meu nome é o Zamyla. E [CODE falando].