![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
|
No me compila una clase
Hola amigos, vi un articulo interesante sobre el cifrado Vigenese y venia con el codigo y tenia varias cosas con las que no me podia compilar asi que las he reparado pero me sigue sin compilar fundamentalmente por dos errores y no se como solucionarlos.
Cita:
El codigo lo tengo acomodado ahora mismo asi: Unit1.cpp: Código PHP:
Código PHP:
|
|
#2
|
||||
|
||||
|
Me di cuenta que me faltaba el ; detras del corchete de cierre del .h de la clase y por eso eran los primeros errores pero ahora me falta el ultimo y no se como solucionarlo.
|
|
#3
|
||||
|
||||
|
Lo he solucionado con esta linea de codigo:
Código PHP:
|
|
#4
|
||||
|
||||
|
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:
Código PHP:
Código PHP:
|
|
#5
|
||||
|
||||
|
Prueba así:
Código PHP:
PD/ Cuidado con la salida por consola, algunos caracteres pueden salir cambiados. Última edición por escafandra fecha: 22-10-2015 a las 02:14:07. |
|
#6
|
||||
|
||||
|
Si si, lo de los caracteres lo se pero es simplemente para hacer una prueba. Si fuese a leer o escribir en un archivo usando fread y fwrite no pasaria.
La verdad es que estudiando tu codigo y el que yo tenia veo que el que yo tenia tenia condicionales que eran redundantes pero no veo cual era el problema ya que haciendo las cuentas en ambos creo que funcionan igual. ¿me puedes explicar donde estaba el fallo exactamente para que diera resultados no validos? |
|
#7
|
||||
|
||||
|
Cita:
Código PHP:
Código PHP:
Saludos. |
|
#8
|
||||
|
||||
|
Ahora estoy intentando hacer lo mismo con un archivo de texto plano y hago esto:
Código PHP:
1. El archivo se abre la primera vez pero despues de cerrarlo intento abrirlo una segunda vez y parece que hay algun problema porque no entra en la parte de desencriptar. 2. Me añade basura al final del archivo y eso que pongo el caracter de fin de cadena al final de la cadena. ¿puedes ayudarme? |
|
#9
|
||||
|
||||
|
Pues al final lo he solucionado abriendolo de forma binaria. No se porque si no es asi falla y me gustaria saberlo.
|
|
#10
|
||||
|
||||
|
Cita:
Personalmente no me gustan los stream de C++ y los uso en muy contadas ocasiones. Incluso he detectado bugs en en mismo código fuente de Builder C++ 5 que arreglé en su momento con cambios en el mismo. Saludos. |
|
#11
|
||||
|
||||
|
Asi he dejado el codigo:
Main.cpp: Código PHP:
Código PHP:
Código PHP:
|
|
#12
|
||||
|
||||
|
Ahora tengo otra duda. Si en vez de usar ese cifrado quisiese usar uno de desplazamientos, o sea tener un array con los caracteres válidos y a la función le meto una cadena y un valor de desplazamiento como por ejemplo encriptar ("hola",3). Cada caracter se desplazaría 3 posiciones en el array de letras con lo que quedaría "krñd". ¿como seria eso para cifrar y descifrar? Llevo toda la tarde y no doy con la forma correcta para que no desborde y de un resultado correcto.
He visto que ese cifrado se llama Cesar y vi esto: https://es.m.wikipedia.org/wiki/Cifrado_César El problema con esas fórmulas es que imaginen que la letra es la z y el desplazamiento es 0: Salida=(27+0)%27=0 Sí no hay desplazamiento debería dar 27 ¿no? Última edición por aguml fecha: 25-10-2015 a las 21:41:20. |
|
#13
|
||||
|
||||
|
Cita:
Saludos. |
|
#14
|
||||
|
||||
|
Porque harias un desplazamineto a cero
mira este codigo Código:
#include <iostream>
using namespace std;
string cifrarCesar(const string cadena, const int rotacion){
string sFinal=cadena;
for(unsigned int i=0;i<cadena.length();i++){
sFinal[i]=char(int(cadena[i])+(rotacion %256));
}
return sFinal;
}
string descifrarCesar(const string cadena, const int rotacion){
string sFinal=cadena;
for(unsigned int i=0;i<cadena.length();i++){
sFinal[i]=char(int(cadena[i])-(rotacion %256));
}
return sFinal;
}
int main()
{
string cadena=cifrarCesar("hola mundo",3);
cout<<cadena<<endl;
string descifrada=descifrarCesar(cadena,3);
cout<<descifrada<<endl;
return 0;
}
|
|
#15
|
||||
|
||||
|
Al menos en teoría debe funcionar para cualquier desplazamiento sin preguntar si es o no cero, que es lo que se plantea aguml. La explicación que dí y que aplicas a tu código: el primer carácter es el 0 y el último 255, siendo en total 256.
Salidos. |
|
#16
|
||||
|
||||
|
Después de analizar mi prueba creo que esto funciona correctamente:
Encriptar: Código PHP:
Código PHP:
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|