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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda con este programa, tengo un error logico creo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda con este programa, tengo un error logico creo  (Leído 1,249 veces)
TaLaP0 XoR BiT

Desconectado Desconectado

Mensajes: 97



Ver Perfil WWW
ayuda con este programa, tengo un error logico creo
« en: 2 Diciembre 2012, 14:14 pm »

bueno pues estoy haciendo un programa que me permita cifrar y descifrar un texto usando el cifrado de cesar. este es mi codigo:

Código:


#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <cstdio>
#include <cstring>


using namespace std;

int op;// opcion del menu
char ts;//centinela
char texto[50];
int desp=1,tam,aux;

//funcion que cifra

void cifra()
{
    cout<<"Indique el texto a cifrar: ";
    gets(texto);
    tam=strlen(texto);
    for(int i=0;i<tam;i++)
    {
      aux=texto[i];
      if(aux+desp>122)
      {
         aux=((aux+desp)-122)+96;
      }
      else
      {
          aux=aux+desp;
      }
      if(texto[i]!=' ')
      {
         texto[i]=aux;
      }
    }
    cout<<"Texto cifrado a: "<<texto;
    getch();
    }


//funcion que descifra

void descifra()
{

    cout<<"Indique el texto a descifrar: ";
    gets(texto);
    tam=strlen(texto);
    for(int i=0;i<tam;i++)
    {
     aux=texto[i];
      if(aux-desp<97)
      {
        aux=122-(96-(aux-desp));
      }
      else
      {
         aux=aux-desp;
      }
      if(texto[i]!=' ')
      {
         texto[i]=aux;
      }
    }
    cout<<"Texto descifrado a: "<<texto;
    getch();
    }



int main()
{
    do{
    
    cout<<"| cifra un mensaje, envialo a tus contactos |"<<endl;
    cout<<"| y solo ellos veran su contenido!!            |"<<endl;
    cout<<"|==============================================|"<<endl;
    cout<<"| Que deseas hacer??                           |"<<endl;
    cout<<"| 1.cifra un mensaje                        |"<<endl;
    cout<<"| 2.descifra el mensaje                     |"<<endl;
    cout<<"| 3.Sacame de aqui                             |"<<endl;
    cout<<"|==============================================|"<<endl<<endl;
    cout<<"Ingresa tu opcion: ";
    cin>>op;
   system("cls");
    switch (op){

            case 1:
                cifra();

                break;

            case 2:
                descifra();

                break;

            case 3:
                 cout<<"Realmente deseas salir, no ";
                break;

            default:
                cout<<"La Opcion elejida no existe. ";

                break;
    }

      cout<<"deseas realizar otra operacion? S/N"<<endl;
      cin>>ts;
      system ("cls");

    }while( ts=='s' || ts =='S');

    return 0;
}




ese es mi codigo la cuestion esta que las funciones cifra y descifra si me funcionan si las compilo por separado, pero cuando las uso llamandolas desde el main, cuando escogo por ejemplo la opcion 1, no me permite ingresar datos. cual sera mi error??. :huh: compilenlo y pruebenlo y me cuentan sus opiniones se los agradeceria muchisimo.


« Última modificación: 4 Diciembre 2012, 00:27 am por TaLaP0 XoR BiT » En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: ayuda con este programa, tengo un error logico creo
« Respuesta #1 en: 2 Diciembre 2012, 14:59 pm »

Citar
Un problema con el \n que se queda en el buffer, que se arregla con getchar.
Te que da por pulir el caso 3 y el default, ya que ambos te conducen a la última instrucción. Pero muy bien el ejercicio:
Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <conio.h>
  4. #include <cstdio>
  5. #include <cstring>
  6.  
  7.  
  8. using namespace std;
  9.  
  10. int op;// opcion del menu
  11. char ts;//centinela
  12. char texto[50];
  13. int desp=1,tam,aux;
  14.  
  15. //funcion que cifra
  16.  
  17. void cifra()
  18. {
  19.    getchar();
  20.    cout<<"Indique el texto a cifrar: ";
  21.    gets(texto);
  22.    tam=strlen(texto);
  23.    for(int i=0;i<tam;i++)
  24.    {
  25.      aux=texto[i];
  26.      if(aux+desp>122)
  27.      {
  28.         aux=((aux+desp)-122)+96;
  29.      }
  30.      else
  31.      {
  32.          aux=aux+desp;
  33.      }
  34.      if(texto[i]!=' ')
  35.      {
  36.         texto[i]=aux;
  37.      }
  38.    }
  39.    cout<<"Texto cifrado a: "<<texto;
  40.    getch();
  41.    }
  42.  
  43.  
  44. //funcion que descifra
  45.  
  46. void descifra()
  47. {
  48.    getchar();
  49.    cout<<"Indique el texto a descifrar: ";
  50.    gets(texto);
  51.    tam=strlen(texto);
  52.    for(int i=0;i<tam;i++)
  53.    {
  54.     aux=texto[i];
  55.      if(aux-desp<97)
  56.      {
  57.        aux=122-(96-(aux-desp));
  58.      }
  59.      else
  60.      {
  61.         aux=aux-desp;
  62.      }
  63.      if(texto[i]!=' ')
  64.      {
  65.         texto[i]=aux;
  66.      }
  67.    }
  68.    cout<<"Texto descifrado a: "<<texto;
  69.    getch();
  70.    }
  71.  
  72.  
  73.  
  74. int main()
  75. {
  76.    do{
  77.  
  78.    cout<<"| cifra un mensaje, envialo a tus contactos |"<<endl;
  79.    cout<<"| y solo ellos veran su contenido!!            |"<<endl;
  80.    cout<<"|==============================================|"<<endl;
  81.    cout<<"| Que deseas hacer??                           |"<<endl;
  82.    cout<<"| 1.cifra un mensaje                        |"<<endl;
  83.    cout<<"| 2.descifra el mensaje                     |"<<endl;
  84.    cout<<"| 3.Sacame de aqui                             |"<<endl;
  85.    cout<<"|==============================================|"<<endl<<endl;
  86.    cout<<"Ingresa tu opcion: ";
  87.  
  88.    cin>>op;
  89.   system("cls");
  90.    switch (op){
  91.  
  92.            case 1:
  93.                cifra();
  94.  
  95.                break;
  96.  
  97.            case 2:
  98.                descifra();
  99.  
  100.                break;
  101.  
  102.            case 3:
  103.                 cout<<"Realmente deseas salir, no ";
  104.                break;
  105.  
  106.            default:
  107.                cout<<"La Opcion elejida no existe. ";
  108.  
  109.                break;
  110.    }
  111.  
  112.      cout<<"\ndeseas realizar otra operacion? S/N"<<endl;
  113.      cin>>ts;
  114.      system ("cls");
  115.  
  116.    }while( ts=='s' || ts =='S');
  117.  
  118.    return 0;
  119. }
Saluditos!.
P.D: cuando eliges las etiquetas GeSHi elige la opción de C++, aunque el código sea en C; así sale coloreado y es más fácil de seguir.


En línea

TaLaP0 XoR BiT

Desconectado Desconectado

Mensajes: 97



Ver Perfil WWW
Re: ayuda con este programa, tengo un error logico creo
« Respuesta #2 en: 3 Diciembre 2012, 04:06 am »

Leosansan gracias nuevamente por iluminar mi camino. Se agradece pulire el programa y seguire practicando mas. tomare en cuenta la sugierencia de c++ en Geshi. gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines