Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/06/2010, 05:43
vibit
 
Fecha de Ingreso: junio-2010
Mensajes: 34
Antigüedad: 14 años, 4 meses
Puntos: 0
Cifrado de Cesar ayuda

buenas soy nuevo en el foro y este es mi primer post
tengo este codigo de cifrado de cesar pero tengo un problema, no se como hace rpara que me valide la letra ñ cuando la escribo si me encripta pero si escribo una L al mandarle a mostrar el texto cifrado me muestra un simbolo de mas y menos, quisiera saber como pueod hacer para que en vez de mostrarme los simbolos me muestre la ñ
Código:
#include <cstdlib>
#include <iostream>

using namespace std;
char *alfabeto="abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
char *encriptado="defghijklmnñopqrstuvwxyzabcDEFGHIJKLMNÑOPQRSTUVWXYZABC";
char *novalido="~!@#$%^&*()_+=-}{|:;<>,./1234567890áéíóú¡²³€¼½¾×?°!?¡¿¨´";

int coninvali=0;

void menu(int &opc)
{
 	 menu:

	 cout<<"Bienvenido al encriptador\nPresione 1 para escribir texto\nPresione 2 para encriptar texto luego de haberlo escrito\nPresione 3 Desencriptar texto luego de haberlo escrito\nPresione 4 para salir\nSu Opcion:";
 	 cin>>opc;
 	 cin.seekg(0, ios::end); 
	 cin.clear(); 
}
char* encripto(char *text)
{
int i=0,j=0;
char text2[250];

   strncpy(text2, text, 250);
   text2[250] = '\0'; 

    for(j=0;j<strlen(text2);j++)
    {
      for(i=0;i<strlen(alfabeto);i++)
      {
         if(*(text2+j)==*(alfabeto+i))
         {
         *(text+j)=*(encriptado+i); 
         }
      }
			
    }
    return text;
}

char* invalido(char *text)
{
int i=0,j=0;
char text2[250];

   strncpy(text2, text, 250);
   text2[250] = '\0'; 

    for(j=0;j<strlen(text2);j++)
    {
      for(i=0;i<strlen(novalido);i++)
      {  	
	  		if(*(text2+j)==*(novalido+i))
			  {coninvali++;}
	  		
      }
    }
}

char* desencripto(char *text)
{
    int i=0,j=0;
    char text2[250];

   strncpy(text2, text, 250);
   text2[250] = '\0';
    
    for(j=0;j<strlen(text2);j++)
    {
      for(i=0;i<strlen(alfabeto);i++)
      {
         if((*(text2+j))==*(encriptado+i))
         {
         *(text+j)=*(alfabeto+i);
         }
      }
    }
    return text;
}

int main () {
	int opc=0;
	do{
	system("cls");
	char texto[251];
	char *texto2;
	menu(opc);
	topfalso:
		system("cls");
		if(opc==1){cout<<"Introduzca Texto a Encriptar\n";
		cin.getline(texto,251);
		texto2=invalido(texto);
 		if(coninvali>0){cout<<"Texto con caracteres no admitidos\n"; system("PAUSE"); coninvali=0; goto topfalso;}else
		cout<<"El Texto introducido es: "<<texto<<"\n\n";
		system("pause");system("cls");
		goto topreal;
	 		 		 }else if(opc==2){
			 	   	 cout<<"Primero escriba texto\n";
			  		system("pause");system("cls");
  					 }else if(opc==3){
					  cout<<"Primero escriba texto\n";
					  system("PAUSE");system("cls");
													}
		if(opc<1||opc>4){cout<<"Opcion Invalida\n"; opc=0; cin.seekg(0, ios::end); cin.clear();  system("pause");}
}while(opc!=4);
return 0;


	do{
 	opc=0;
	topreal:
	system("cls");
	char texto[251];
	char *texto2;
	menu(opc);
	
		system("cls");
		if(opc==1){cout<<"Introduzca Texto a Encriptar\n";
		cin.getline(texto,251); 
		texto2=invalido(texto);
 		if(coninvali>0){cout<<"Texto con caracteres no admitidos\n"; system("PAUSE"); coninvali=0; goto topreal;}else
		cout<<"El Texto introducido es: "<<texto<<"\n\n";
		system("pause");system("cls");
			  }else if(opc==2){
			  		texto2=encripto(texto);
			  		cout<<"El Texto Encriptado es: "<<texto2<<"\n";
			  		system("pause");system("cls");
 				}else if(opc==3){
					  texto2=desencripto(texto);
					  cout<<"El Texto Desencriptado es: "<<texto2<<"\n";
					  system("PAUSE");system("cls");
					  				}
 				if(opc<1||opc>4){cout<<"Opcion Invalida\n"; opc=0; cin.seekg(0, ios::end); cin.clear(); system("pause");}
					  				
}
while(opc!=4);
	
}
muchas gracias de ante mano, saludos