Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 21-10-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
Ahora he modificado el codigo un poco y sobre todo he añadido mas caracteres a la mascara de caracteres válidos y ya no funciona correctamente. Tengo esto:
Main.cpp:
Código PHP:
//---------------------------------------------------------------------------
#include <iostream>
#include "Unit1.h"
//---------------------------------------------------------------------------

int main()
{
   
string cadena "Hola Mundo, como te va.";
   
string semilla "aguml";

   
Vigenere *vig = new Vigenere;
   
string cifrada vig->cifrar(cadenasemilla);
   
std::cout << cifrada << std::endl;

   
string descifrada vig->descifrar(cifradasemilla);
   
std::cout << descifrada << std::endl;
   
delete vig;
   
std::cin.get();

   return 
0;

Unit1.cpp:
Código PHP:
/************************************************
*  Nombre : Vigenere.cpp                        *
*                                               *
*  Cifrado de cesar de sustitución multiple     *
*  por medio de sumas y restas del alfabeto     *
*                                               *
*  Fulapol                                      *
*  [email protected]                            *
*  my.opera.com/fulapol                         *
*                                               *
************************************************/

/************************************************
*                                               *
*  El Constructor que debe recibir la cadena a  *
*  tratar y la cadena semilla                   *
*                                               *
************************************************/
#include "Unit1.h"

Vigenere::Vigenere(){
   
letras "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZáéíóúÁÉÍÓÚüÜ1234567890¿?¡!,;.:-_ \"<>()=+*/&%$#@";
}

Vigenere::~Vigenere(){

}
/************************************************
*                                               *
*  El metodo cifrar, que regresa una cadena de  *
*  texto que solo despues de ser cifrada        *
*                                               *
************************************************/

string Vigenere::cifrar(string origstring sem){
   
string final;
   
int imovimientorotaciontotal;
   
size_t pospos2;
   
//Las variables serviran para registrar la posicion
   //de las letras y calcular la semilla

   
this->texto limpiar(orig);
   
this->semilla limpiar(sem);

   for(
i=0rotacion=0texto.length(); i++, rotacion++){
      
pos letras.find(texto.at(i));
      
pos2 letras.find(semilla.at(rotacion));
      
total = ((int)(pos+pos2))%letras.length();
      
//El total que marca la posicion de la letra y la
      //semilla sumadas

      
if(total letras.length())
         
movimiento total letras.length();
      else
         
movimiento total;
      
//Para asegurarnos que esta dentro del rango

      
final.append(letrasmovimiento1);
      if(
rotacion == semilla.length() - 1)
         
rotacion 0;
      
//Si se acaba la semilla, regresar al principio
   
}
   return final;
}

/************************************************
*                                               *
*  El metodo descifrar, que regresa una cadena  *
*  de texto que solo despues de ser descifrada  *
*                                               *
************************************************/

string Vigenere::descifrar(string origstring sem){
   
//La funcion es exactamente la misma que en el metodo
   //cifrar, solo que aqui las posiciones se restan para
   //eliminar la semilla del texto

   
string final;
   
int imovimientorotaciontotal;
   
size_t pospos2;

   
this->texto limpiar(orig);
   
this->semilla limpiar(sem);
   
   for(
i=0rotacion=0i<texto.length(); i++, rotacion++){
      
pos letras.find(texto.at(i));
      
pos2 letras.find(semilla.at(rotacion));
      
total = ((int)(pos pos2)) % letras.length();
      if(
total 0)
         
movimiento total letras.length();
      else
         
movimiento total;
      final.
append(letrasmovimiento1);
      if(
rotacion == semilla.length() - 1)
         
rotacion 0;
   }
   return final;
}

/************************************************
*                                               *
*  El metodo limpiar, que regresa una cadena de *
*  texto que solo contiene los caracteres       *
*  soportados por la clase                      *
*                                               *
************************************************/

string Vigenere::limpiar(string cadena){
   
int i;
   
string final;
   for(
i=0cadena.length(); i++){
      if(
letras.find(cadena.at(i)) != -1)
         final.
append(&cadena.at(i),1);
      
//Agregamos a la cadena final el caracter
      //si se encuentra en la variable letras
   
}
   return final;

Unit1.h:
Código PHP:
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <cstring.h>

class Vigenere{
   private:
      
string texto,semilla,letras;
      
string limpiar(string cadena);
      
//Las variables son privadas, el metodo limpiar
      //es privada ya que solo lo utilizan los otros
      //metodos para limpiar la entrada

   
public:
      
Vigenere();
      ~
Vigenere();
      
string cifrar(string origstring sem);
      
string descifrar(string origstring sem);
      
//Esto es publico porque es la unica forma de
      //accesar a los datos de la clase
};
//---------------------------------------------------------------------------
#endif 
¿Como la pongo correctamente la máscara?
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
con FindComponent en una dll no compila aguml C++ Builder 3 30-12-2014 14:33:20
Pasar mi clase a una clase de 3 capas o lo mas parecido elarys OOP 2 07-04-2011 23:02:54
No compila FastReport Chogo Varios 3 18-06-2010 21:32:42
clase que contiene otra clase definida de forma posterior astwin OOP 5 20-02-2009 11:26:55
Mi aplicacion no compila Lizette Varios 2 08-11-2008 16:24:25


La franja horaria es GMT +2. Ahora son las 05:45:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi