En el cifrado de Cesar para encontrar los sustitutos puedes utilizar el operador de modulo (ya hay ejemplos) o bien se pueden colocar todos los caracteres en un array, con ello la operación termina como una suma (o resta si la operación es descifrar).
Por ejemplo:
#include <stdio.h>
#include <stdlib.h>
#define ABC "abcdefghijklmnopqrstuvwxyz"
int main(void)
{
char ch[] = ABC ABC;
size_t max_despl = sizeof(ABC) - 1;
unsigned despl;
unsigned i;
if (scanf("%u", &despl
) != 1 || despl
> max_despl
) return EXIT_FAILURE;
for (i = 0; i < max_despl; i++)
printf("%c ==> %c\n", ch
[i
], ch
[i
+ despl
]);
return EXIT_SUCCESS;
}
----
Lo que yo necesito es un programa que pida una palabra o frase y que cambie las letras ejemplo A por H b por X y asi entiendes?
Para eso debes colocar todos los caracteres a buscar en un array y sus sustituciones en otro, mas o menos así:
char in[] = "Ab";
char out[] = "HX";
Buscas cada carácter en el array "in" para conocer su indice, una vez lo obtienes (el indice, claro) lo sustituyes por el carácter correspondiente (mismo indice) del array "out".
La solución ya la tienes en el programa de
CCross, una opción ligeramente distinta es utilizando la función strchr para realizar la búsqueda:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char in[] = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
char out[] = "XJOPZWAUÑLDQSFRBMVHKNYTIEGC";
char cadena[30];
char *p;
int i;
int j;
printf("Ingrese una cadena en Mayuscula: "); if (scanf("%s", cadena
) != 1) return EXIT_FAILURE;
for (i = 0; cadena[i] != '\0'; i++){
putchar(p
== NULL
? cadena
[i
] : out
[p
- in
]); }
return EXIT_SUCCESS;
}
Un saludo