SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: Alehtokita en Miércoles 2 de Mayo de 2012, 23:19
-
lo que pasa es que tengo este codigo
#include <stdio.h>
#include <string.h>
char *claro="abcdefghijklmnñopqrstuvwxyz";
char *oculto ="DEFGHIJKLMNÑOPQRSTUVWXYZABC";
char* cif(char*);
char* des(char*);
int main(void)
{
char texto[300];
char *mod;
fprintf(stdout,"Ingrese texto a cifrar\t:\n");
fscanf(stdin,"%s",texto);
mod=cif(texto);
fprintf(stdout,"\nLa cadena Cifrada es\t:%s\n\n",mod);
mod=des(mod);
fprintf(stdout,"La cadena Desifrada es\t:%s",mod);
getchar();
getchar();
return 0;
}
char* cif(char *text)
{
int i,j;
for(j=0;j<strlen(text);j++)
{
for(i=0;i<strlen(claro);i++)
{
if(*(text+j)==*(claro+i))
{
*(text+j)=*(oculto+i);
}
}
}
return text;
}
char* des(char *text)
{
int i,j;
for(j=0;j<strlen(text);j++)
{
for(i=0;i<strlen(claro);i++)
{
if((*(text+j))==*(oculto+i))
{
*(text+j)=*(claro+i);
}
}
}
return text;
}
es el encriptado de César , y lo que hace es correr cada letra del alfabeto tres posiciones, el profesor me pidió que lo cambiara para ingresar el número de posiciones, es decir que ya no sean 3.. pero no sé como hacerlo.. y luego tengo que agregar los parámetros desde la línea de ordenes donde "-e" sea encriptar y "-d" desencriptar.. y otro donde se ingresen las posiciones que tiene que mover...es para ya! URGENTE POR FAVOOOR :ayuda:
-
Tengo este avance.. pero pide un archivo.. necesito que pida -e cuando encripta y el número de posiciones, que en este caso sería key
#include <stdio.h>
#include <string.h>
int main (int argc, char **argv)
{
if (argc != 3)
{
printf("%s -[e|d] key\n", argv[0]);
printf("%s -e 3\n", argv[0]);
exit(0);
}
if (argv[1][1] != 'e' && argv[1][1] != 'd')
{
printf("%s -[e|d] key\n", argv[0]);
exit(0);
}
char ed = argv[1][1];
int k = atoi(argv[2]);
if (k > 25)
k = k % 26;
return 0;
}
-
Bueno no entendí, necesitas que el texto que va a encriptar o desencriptar se encuentre en un archivo
-
No sé si entendí del todo, pero creo que tendrías que modificar los for para que se ejecutaran un número de veces que el usuario decida.
Pues creo desde mi limitado conocimiento que deberías hacer un printf que pregunte al usuario ¿Cuántos espacios desea correr?
Y asignar ese valor a una variable por lo menos t, y las funciones además de recibir el carácter debería recibir la t y los for irían solo hasta i<t.
-
hola estaba revisando un codigo cesar
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define N 80
void encriptarFrase();
void desencriptarFrase();
int largo;
char frase[N];
int main ()
{
printf("Ingrese la frase: ");
gets(frase);
largo = strlen(frase);
encriptarFrase();
printf("La frase encriptada es: %sn",frase);
desencriptarFrase();
printf("La dfrase desencriptada es: %sn",frase);
return 0;
}
void encriptarFrase ()
{
int i;
for(i=0 ; i<largo ; ++i)
{
//convierte las minuscalas a mayuscula.
*(frase + i) = toupper(*(frase + i));
//descarta los digitos
if(isalpha(*(frase + i)))
{
//verifica los casos especiales X-Y-Z
if(*(frase + i) > 87)
{
*(frase+i) = *(frase+i) - 23;
}
else
{
*(frase + i) = *(frase + i) + 3;
}
}
}
}
void desencriptarFrase ()
{
int i;
for(i=0 ; i<largo ; ++i)
{
if(isalpha(*(frase + i)))
{
if(*(frase + i) < 68)
{
*(frase+i)= *(frase+i) + 23;
}
else
{
*(frase+i)= *(frase+i) - 3;
}
}
}
}
pero yo quiero el afin queria darme una idea con este
pero para encriptar
necesito 2 variables mas que es a y b que el usuario les pondra valor y
tengo que agarrar la posicion de la letra que el usuario coloco * a que es el valor q ue le ponga el usuario y el resultarlo sumarlo mas b
y si es mayor a 27 que 27 es el valor del abecedario entonces lo debe de dividir agarrar el residuo y buscarlo en el abecedario e imprimir la letra que corresponde