elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como cifrar letra por letra en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 3 [4] 5 6 7 Ir Abajo Respuesta Imprimir
Autor Tema: Como cifrar letra por letra en C++  (Leído 65,395 veces)
CCross

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: Como cifrar letra por letra en C++
« Respuesta #30 en: 11 Junio 2013, 03:56 am »

rir3760 Muchas gracias el código es lo que buscaba pero obtengo el mismo error anterior el programa se me cierra antes de mostrar los resultados  :-( alguien sabe el porque

Prueba con poner un getchar(); antes de:

Código
  1. return EXIT_SUCCESS;

Buscate un buen libro de C te recomiendo el libro de kernighan y Ritchie que es muy bueno
para empezar

Saludos


En línea

Royca3

Desconectado Desconectado

Mensajes: 45



Ver Perfil WWW
Re: Como cifrar letra por letra en C++
« Respuesta #31 en: 11 Junio 2013, 04:57 am »

Prueba con poner un getchar(); antes de:

Código
  1. return EXIT_SUCCESS;

Buscate un buen libro de C te recomiendo el libro de kernighan y Ritchie que es muy bueno
para empezar

Saludos


Igual se sale :'( Pues si de echo ya tengo unos manuales pero apenas comienzo :)
Pero porque se sigue saliendo del programa sin mostrar resultados?

Saludos.


En línea

Homo erectus
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Como cifrar letra por letra en C++
« Respuesta #32 en: 11 Junio 2013, 10:17 am »

Igual se sale :'( Pues si de echo ya tengo unos manuales pero apenas comienzo :)
Pero porque se sigue saliendo del programa sin mostrar resultados?

Saludos.
Pon 2 getchar().

La razón por la que se sale esque el programa termina al finalizar el main, si que muestra los resultados pero va tan rápido que ni los ves.

Por cierto:
http://foro.elhacker.net/programacion_cc/iquestpor_que_no_deberias_usar_el_devcpp-t385150.0.html
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Royca3

Desconectado Desconectado

Mensajes: 45



Ver Perfil WWW
Re: Como cifrar letra por letra en C++
« Respuesta #33 en: 11 Junio 2013, 21:11 pm »

Pon 2 getchar().

La razón por la que se sale esque el programa termina al finalizar el main, si que muestra los resultados pero va tan rápido que ni los ves.

Por cierto:
http://foro.elhacker.net/programacion_cc/iquestpor_que_no_deberias_usar_el_devcpp-t385150.0.html

Listo amigo Todo en orden, el programa cumple la función requerida  ;-) ;-) ;-) ;-) Les agradezco a CCross, rir3760, a leosansan aunque le doy gracias a todos por su buena voluntad próxima mente subiré un tutorial  :laugh:

Saludos.
En línea

Homo erectus
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Como cifrar letra por letra en C++
« Respuesta #34 en: 12 Junio 2013, 16:58 pm »

Buenas amigos!!

Aquí otra versión del cifrado cesar donde tu puedes indicar el desplazamiento que quieras


No es el cifrado César, te muestro una salida al código que planteas:


Citar
Introduce una cadena: wikipedia la enciclopedia libre
Ingrese desplazamiento:
cifrado es: ┘╦═╦ÊÃã╦├

descifrado es: wikipedia

Como ves, en el cifrado se "va más allá" de la z/Z, cuando debería empezar a contar desde la a.

Una solución  "a pura fuerza bruta", es decir aplicando estrictamente lo que plantea el cifrado César :


Código
  1. /*En criptografía, el cifrado César, también conocido como cifrado
  2. por desplazamiento, código de César o desplazamiento de César, es
  3. una de las técnicas de codificación más simples y más usadas.
  4. Es un tipo de cifrado por sustitución en el que una letra en el
  5. texto original es reemplazada por otra letra que se encuentra un
  6. número fijo de posiciones más adelante en el alfabeto. Por
  7. ejemplo, con un desplazamiento de 6.*/
  8. #include <stdio.h>
  9. #include<stdlib.h>
  10. #include <string.h>
  11. int main (void)
  12. {
  13.    int i,n=0,aux;
  14.    char frase [256];
  15.    char cadena []="WIKIPEDIA, LA ENCICLOPEDIA LIBRE \n\
  16.    Wikipedia la Enciclopedia Libre f F x X";
  17.    puts("WIKIPEDIA, LA ENCICLOPEDIA LIBRE \n\
  18.    Wikipedia la Enciclopedia Libre f F x X");
  19.    for (i=0;cadena[i]!='\0';i++)
  20.        {
  21.            if ((cadena [i]>='u' && cadena [i]<='z') || (cadena [i]>='U' && cadena [i]<='Z' ))   cadena [i]-=20;
  22.            else if (cadena [i]>='a' && cadena [i]<='t' || (cadena [i]>='A' && cadena [i]<='T' ))   cadena [i]+=6;
  23.        }
  24.    puts("\nY ahora codificada con desplazamiento 6:");
  25.    printf ("%s\n",cadena);
  26.    puts("\nY ahora descodificada: ");
  27.    for (i=0;cadena[i]!='\0';i++)
  28.        {
  29.            if ((cadena [i]<='f' && cadena [i]>='c') || (cadena [i]<='F' && cadena [i]>='C' ))   cadena [i]+=20;
  30.            else if (cadena [i]>'f' && cadena [i]<='z' || (cadena [i]>'F' && cadena [i]<='Z' ))   cadena [i]-=6;
  31.        }
  32.    printf ("%s\n",cadena);
  33.  
  34. /******* AHORA CON ENTRADA DESDE TECLADO *******/
  35.  
  36.    while (1)
  37.    {
  38.    n=0;
  39.    puts ("\n\nIntroduce una frase: ");
  40.    fgets (frase,255,stdin);
  41.    do
  42.    {
  43.        printf ("\nIndica el desplazamiento (1-25): ");
  44.        scanf ("%d",&n);
  45.        while (getchar()!='\n');
  46.    }while (n<1 || n>25);
  47.    for (i=0;frase[i]!='\0';i++)
  48.    {
  49.        if ((frase [i]>('z'-n) && frase [i]<='z') || (frase [i]>('Z'-n) && frase [i]<='Z' ))
  50.            frase [i]=frase [i]-26+n;
  51.        else if (frase [i]>='a' && frase [i]<=('z'-n) || (frase [i]>='A' && frase [i]<=('Z'-n) ))
  52.            frase [i]+=n;
  53.    }
  54.    printf("\nCodificada con desplazamiento %d \n",n);
  55.    printf ("%s\n",frase);
  56.    puts("\nY ahora descodificada: ");
  57.    for (i=0;frase[i]!='\0';i++)
  58.        {
  59.            if ((frase [i]<('a'+n) && frase [i]>=('a')) || (frase [i]<('A'+n) && frase [i]>=('A') ))
  60.            frase [i] =frase [i]+26-n;
  61.            else if ((frase [i]>=('a'+n) && frase [i]<=('z') )|| (frase [i]>=('A'+n) && frase [i]<=('Z') ))
  62.                frase [i]-=n;
  63.        }
  64.    printf ("%s\n",frase);
  65.    }
  66.  
  67.    /***************  :-)   OTRA FORMA  :-)   **********/
  68.    return 0;
  69. }
  70.  

Con una salida como esta:

Código
  1. WIKIPEDIA, LA ENCICLOPEDIA LIBRE
  2.    Wikipedia la Enciclopedia Libre f F x X
  3.  
  4. Y ahora codificada con desplazamiento 6:
  5. COQOVKJOG, RG KTIOIRUVKJOG ROHXK
  6.    Coqovkjog rg Ktioiruvkjog Rohxk l L d D
  7.  
  8. Y ahora descodificada:
  9. WIKIPEDIA, LA ENCICLOPEDIA LIBRE
  10.    Wikipedia la Enciclopedia Libre f F x X
  11.  
  12.  
  13. Introduce una frase:
  14. leosansan Abc Xyz
  15.  
  16. Indica el desplazamiento (1-25): 6
  17.  
  18. Codificada con desplazamiento 6
  19. rkuygtygt Ghi Def
  20.  
  21.  
  22. Y ahora descodificada:
  23. leosansan Abc Xyz

¡Vamos!, a ver si se animan a plantear códigos diferentes, que sean más ingeniosos y/o eficaces. Ya hay una media propuesta de cypascal usando la operación módulo -ver post anteriores-, aunque está incompleto, ya que le falto el descifrado. ;) ;-) ;)

Saluditos!.
    
« Última modificación: 13 Junio 2013, 19:06 pm por leosansan » En línea

xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: Como cifrar letra por letra en C++
« Respuesta #35 en: 12 Junio 2013, 18:59 pm »

Y que sucede si en mi cadena tengo algun caracter estilo " @#$*{}", la tabla ascii no es solo el abecedario.

Un saludo.
En línea

Royca3

Desconectado Desconectado

Mensajes: 45



Ver Perfil WWW
Re: Como cifrar letra por letra en C++
« Respuesta #36 en: 12 Junio 2013, 19:05 pm »

leosansan, Excelente código, Gracias
(LA PROGRAMACIÓN ES MÁGICA  ;D ;D )

pd. Ya inicie a leer unas guías para aprender C

Saludos.
En línea

Homo erectus
CCross

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: Como cifrar letra por letra en C++
« Respuesta #37 en: 12 Junio 2013, 19:23 pm »

No es el cifrado César, te muestro una salida al código que planteas:
Como ves, en el cifrado se "va más allá" de la z/Z, cuando debería empezar a contar desde la a.

Aqui va una versión mas eficiente

Código
  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. int main()
  5. {
  6.     int i, j, des, a, z;
  7.     char cadena[30] = "";
  8.  
  9.     printf("Ingrese una cadena: ");
  10.     scanf("%s", cadena);
  11.  
  12.     printf("Ingrese desplazamiento: ");
  13.     scanf(" %d", &des);
  14.  
  15.     for(i = 0; cadena[i]!='\0'; i++)
  16.     {
  17.        a = 97;
  18.        if(isupper(cadena[i])) a = 65;
  19.        cadena[i] =((cadena[i]-a+des)%26)+a;
  20.      }
  21.      printf("\nCifrado es: %s \n", cadena);
  22.  
  23.     for(j = 0; cadena[j]!='\0'; j++)
  24.     {
  25.        z = 122;
  26.        if(isupper(cadena[j])) z = 90;
  27.        cadena[j]= ((cadena[j]-z-des)%26)+z;
  28.      }
  29.  
  30.      printf("\nDecifrado es: %s \n", cadena);
  31.  
  32.     return 0;
  33. }
  34.  

Saludos  ::)
« Última modificación: 12 Junio 2013, 19:28 pm por CCross » En línea

Royca3

Desconectado Desconectado

Mensajes: 45



Ver Perfil WWW
Re: Como cifrar letra por letra en C++
« Respuesta #38 en: 12 Junio 2013, 19:49 pm »

Son unos programadores grosos!

Sucedía lo mismo de siempre, no mostraba el resultado si no que se cerraba le agregue esto y listo...

     getchar();
 
 getchar();
 }

:D eliminando el return 0;

Saludos.
En línea

Homo erectus
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Como cifrar letra por letra en C++
« Respuesta #39 en: 12 Junio 2013, 20:15 pm »

Son unos programadores grosos!

Sucedía lo mismo de siempre, no mostraba el resultado si no que se cerraba le agregue esto y listo...

     getchar();
 
 getchar();
 }

:D eliminando el return 0;

Saludos.
No elimines el return 0, vas en contra del estándar.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Páginas: 1 2 3 [4] 5 6 7 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Codificacion en archivos bat, letra ñ
Scripting
santi810 3 12,356 Último mensaje 1 Diciembre 2013, 18:57 pm
por Eleкtro
[DUDA] Como Desactivar Dispositivos Portátiles Para Que Se Le Asigne Una Letra
Windows
KZN 3 2,976 Último mensaje 11 Marzo 2014, 17:00 pm
por Randomize
Dibujar letra 'T'
PHP
luchi 2 2,406 Último mensaje 20 Abril 2014, 22:14 pm
por luchi
Como con una letra direccionarme a la tabla/registro?
Programación C/C++
enzopaez14 1 2,151 Último mensaje 5 Septiembre 2016, 02:50 am
por AlbertoBSD
Comparar letra una letra en un array, con una letra del abcdario
Programación C/C++
Naimaderis 2 4,006 Último mensaje 10 Marzo 2017, 04:24 am
por Naimaderis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines