ZAMYLA CHAN: Felicitaciones Ha terminado el primer par de programas en C. Sé que su primera incursión en Sintaxis de C puede ser desalentador. Pero te aseguro que al final de la Por supuesto, usted será capaz de mirar a la primer par de tareas y completarlos en cuestión de minutos. Ahora que usted está consiguiendo más familiar con la sintaxis, vamos a llegar a César. En Caesar, el usuario deberá presentar una clave de entero como una línea de comandos argumento, a continuación, introduzca una llanura mensaje de texto en el indicador. El programa entonces cifrar el texto e imprimir su mensaje de texto cifrado. El cifrado de César es bastante simple. Cambie cada letra, en su texto plano, por la clave. Como resultado de ello, es también bastante inseguro. Pero la implementación de César introducirá nosotros ASCIIMath y matriz de datos estructuras. Vamos a llegar a lo más complejo sistemas de cifrado más tarde. Con una llave de César 2, la letra A en texto plano estaría representado por la letra C en el texto cifrado porque C es de dos letras después de A. B serían representada por D y C de E. Hacia el final del alfabeto, W es representado por Y, y X por Z. Pero Y no tiene dos letras después de que, por lo las cifras se envuelve alrededor del alfabeto. Y en texto plano se representa así por A en texto cifrado, y Z por B. Se puede ayudará a ver el Caesar Cypher como una rueda alfabeto continua. Para cifrar su texto, el usuario entrarán dos argumentos en la línea de comandos - . / César seguida de una tecla. Como siempre, no podemos confiar en el usuario completamente para entrar de entrada que crea sentido para nuestro programa. Así que vamos a tener que validar su entrada de línea de comandos. En lugar de utilizar void main int, estamos utilizando int main, int argc, argv cadena. El argc variable entera representa el número de argumentos pasados ​​a la línea de comandos. Y argv es un array, o piensan que es una lista de los argumentos pasados ​​pulg Así que para César, ¿cómo validamos entrada del usuario? Bueno, sólo deberían estar entrando dos argumentos de línea de comandos - . / César y una clave. Así que si argc no es 2, lo que significa que que o bien se olvidó la llave y sólo introducido. / césar, o entrado varias claves. Si este es el caso, entonces usted desee imprimir las instrucciones y salir del programa. Tendrán que volver a intentarlo desde la línea de comandos. Pero incluso si argc es 2, se le que comprobar si le dará una clave válida. Para César, que necesita un entero. Pero argv es un array de cadenas. ¿Cómo se accede a esa llave? Un rápido vistazo a las matrices - estructuras de datos que tienen múltiples valores del mismo tipo de datos. Las entradas están indexados a cero, lo que significa que el primer elemento es el índice cero y el último elemento está en el tamaño del índice menos 1, donde el tamaño es el número de elementos de la matriz. Si declaré un nuevo buzón matriz de cadenas de longitud 3, visualmente, que se parece a esto. Tres contenedores de cadenas , Al lado del otro. Para acceder a cualquier elemento, escriba el nombre de la matriz y luego indicar el índice entre corchetes. Aquí, voy a asignar un valor a cada elemento, al igual que haría con cualquier otra variable de cadena. Así que para tener acceso a nuestros argumentos de la línea de comandos, todo lo que tenemos que hacer es acceder el elemento de la derecha de la matriz argv. Si el usuario ha introducido. / Equipo de despegue Rocket en el terminal, argv 0 sería ser. / despegue. argv habría equipo, y arg2 sería cohete. Ahora que podemos acceder a la llave, todavía tenemos que hacer asegurarse de que es correcta. Tenemos que convertirlo en un entero. Pero no podemos simplemente lanzar como que hemos hecho anteriormente. Por suerte, la A a la función Y se encarga de esto para nosotros e incluso devuelve 0 si la cadena no se puede convertir en un número entero. Todo depende de ti, sin embargo, a decir ¿por qué el usuario no lo harás dejar que el programa continúe. Almacenar el resultado de la A a la Y en un entero, y ahí lo tienes tu llave. La siguiente parte es simple. Preguntar al usuario en su texto, que será de tipo de datos de cadena. Por suerte para nosotros, todo el usuario introduce cuerdas son válidas. Ahora que tenemos todas las aportaciones necesarias desde el usuario, es el momento para nosotros para cifrar su mensaje. El concepto de Caesar es simple suficiente para entender. Pero ¿cómo sabe el ordenador que cartas vienen uno tras otro? Aquí es donde la tabla ASCII entra en juego Cada personaje tiene un número entero número asociado con ella. Capital es de 65. Capital B es 66. Minúsculas a es 97. Minúsculas b es de 98. Pero los personajes no se limitan a sólo números alfabéticos. Por ejemplo, el símbolo @ es el número ASCII 64. Antes de abordar toda la cadena, vamos a suponer que sólo tenemos que cambiar un carácter. Bueno, lo único que queremos desplazar real letras en el texto plano, no caracteres o números. Así que lo primero que vamos a querer cheque es si el personaje está en el alfabeto. El isalpha función hace por nosotros y devuelve un Boolean - cierto si los personajes es una carta, false en caso contrario. Otras dos funciones son útiles isupper y islower, con nombres fáciles de entender. Devuelven true si el carácter dado es mayúscula o minúscula, respectivamente. Puesto que son booleanos, son útil para utilizar como condiciones. Si isalpha devuelve true, tendrá para cambiar el carácter con la tecla. Así que vamos a abrir a ASCIIMath y hacer algunos cálculos ASCII. El uso es muy similar a la de uso para César y toma en clave en el línea de comandos. Si me quedo ASCIIMath 5, parece añadir 5 a una, y me da la letra f, y muestra el valor ASCII. Así que vamos a echar un vistazo al programa. Usted podría preguntarse, aquí, ¿por qué letra es un número entero, cuando es claramente, también, una carta. Resulta que los personajes y enteros son intercambiables. Al poner la letra A en un solo entre comillas, el entero puede almacenar el valor ASCII del capital A. Tenga cuidado, sin embargo. Usted necesita las ropas sueltas. Sin las comillas simples, la compilador buscaría una variable Un llamado, y no el carácter. Luego agrego carta y una clave, el almacenamiento de la resumir en el int variables de resultado. Aunque resultado es de tipo de datos entero, mi sentencia printf usa el % C marcador de posición para los caracteres. Así el programa imprime el carácter asociado con el resultado de número entero. Y ya que imprimimos el número entero formar y usar% d, vemos el número así. Así que ahora usted puede ver que hemos tratar a los personajes y números enteros, y viceversa. Vamos a probar a cabo ASCIIMath algunos más veces utilizando 25 como una clave. Recibimos la letra z. Ahora tratamos 26. Queremos obtener la letra a, pero En su lugar tenemos una escuadra izquierda. Así que, obviamente, sólo añadir la clave de la carta no es suficiente. Tenemos que encontrar una fórmula para envolver todo el alfabeto, como nuestro ejemplo en el principio hizo. Una fórmula para el César cambio es el siguiente. c es igual a P Plus k módulo 26. Recuerde que es un modulo de utilidad operación que nos da el resto de dividir un número por otro. Vamos a aplicar esta fórmula a la llanura carta de texto con una clave de 2. El valor ASCII de y es 89, lo que nos da 91 módulo 26, que es igual a 13 - definitivamente no es el valor ASCII de una, que es 67. Humor mí ahora y alejarse de la Valores ASCII a un índice alfabético donde A es cero y Z es 25, lo que significa que Y es 24. 24 más 2, módulo 6, nos da 26, módulo 26, 0, que es el índice alfabético de a. Así que esta fórmula parece aplicarse a la índice alfabético de la letra y no su valor ASCII. Pero usted comienza con valores ASCII. Y para imprimir el carácter de texto cifrado, usted necesitará su valor ASCII también. Todo depende de usted, entonces, averiguar cómo cambiar una y otra. Una vez que averiguar la fórmula correcta para un carácter, todo lo que tiene que hacer es aplicar la misma fórmula a todos los letra en el texto sin formato - sólo si esa carta es alfabético, por supuesto. Y recuerde que usted necesita para preservar el caso, superior o inferior, que es donde las funciones isupper y islower mencionado anteriormente será muy útil. Es posible que tenga dos fórmulas - uno para las letras mayúsculas y uno para minúsculas. Así isupper un esMenor le ayudará a determinar cuál es la fórmula a aplicar. ¿Cómo se aplica la fórmula a cada carácter individual en una cadena? Bueno, una cadena es sólo una matriz de caracteres. Así que usted puede acceder a cada personaje por agrupando más de todos los personajes en el cadena en un bucle for. En cuanto a la condición de su bucle, el strlen función, por cadena longitud, será muy útil. Se necesita una cadena como entrada y devuelve la longitud de esa cadena. Asegúrese de incluir la biblioteca de derecho utilizar la función de longitud de la cadena. Y ahí tienes tu texto cifrado. Mi nombre es el Zamyla. Y [HABLAR CODE].