Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/10/2015, 13:42
Avatar de gaara_fiby
gaara_fiby
 
Fecha de Ingreso: octubre-2015
Mensajes: 3
Antigüedad: 8 años, 6 meses
Puntos: 0
Pregunta Encriptacion en C

Primero que nada hola a todos, mi problema es el siguiente: Necesito hacer un programa en C que utilice el cifrado Cesar como base, el programa le pide al usuario que ingrese una frase y el numero de veces que quiera recorrer todas las letras de la frase. Por ejemplo si el usuario ingresa la frase: Zorrillo Ciego, y el usuario decide recorrerlo tres veces, el mensaje encriptado quedaría así: Cruuloor Flhjr. De todas maneras por si no me explico bien les dejo el programa que yo eh hecho:

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. char Letras[27]={ A , B , C , D , E , F , G , H , I , J , K , L , M , N , Ñ , O , P , Q , R , S , T , U , V , W , X , Y , Z };
  4. void codificar(char Mensaje[27],int numero);
  5. void decodificar(char Mensaje[27],int numero);
  6.  
  7. void codificar(char Mensaje[27],int numero)
  8. {
  9. int i=0;
  10. char c;
  11. while(Mensaje[i]!= \0 )
  12. {
  13. Mensaje[i]=Mensaje[i]+numero;
  14. i++;
  15. }
  16. printf("\nEl mensaje codificado es:\n%s\n",Mensaje);
  17. }
  18.  
  19. void decodificar(char Mensaje[27],int numero)
  20. {
  21. int i=0;
  22. while(Mensaje[i]!= \0 )
  23. {
  24. Mensaje[i]=Mensaje[i]-numero;
  25. i++;
  26. }
  27. printf("\nEl mensaje decodificado es:\n%s\n",Mensaje);
  28. }
  29.  
  30. int main()
  31. {
  32. int n;
  33. char cadena[27];
  34. printf("introduce un mensaje: ");
  35. fflush(stdin);
  36. scanf("%s", cadena);
  37. while(getchar()!= \n );
  38. printf("introduce un numero: ");
  39. scanf("%d",&n);
  40. while(getchar()!= \n );
  41. codificar(cadena, n);
  42. decodificar(cadena, n);
  43. return 0;
  44. }

Mi primer problema es que no se como hacer que si el usuario introduce una palabra con Ñ y lo quiere por ejemplo recorrer una sola vez aparezca la O, en lugar del siguiente carácter ASCII que seria este ª. Mi segundo problema esta en que no me admite mensajes con espacios y solo me encripta la primer palabra, lo que quiero es que reconozca los espacios y no me los encripte simplemente que los muestre. Y por ultimo como hacer que si inserto una Z por ejemplo, y pido que se recorra una vez, me muestre la A, en lugar del siguiente carácter ASCII que seria el corchete. Ojala me puedan ayudar, después de tantos intentos ya no se me ocurre sinceramente como hacerlo y ya estoy harto. Bueno, de ante mano gracias y espero me puedan ayudar.