Bueno, es que resolví un problema que viene en mi libro de C++, sobre un programa que cifre y descifre números de 4 dígitos con una fórmula que te dan (para cifrar, primero le sumas 7 y sacas modulo 10 a cada dígito, y luego intercambias el dígito 1 con el 3, y el 2 con el 4). Pues me salió bien y funciona... pero no pone los 0 a la izquierda y me gustaría saber cómo hacerlo.
Les pongo el código fuente:
Código C++:
Ver original#include <iostream>
using std::cout;
using std::cin;
using std::endl;
class Cifrado
{
public:
int cifrar(int original)
{
int cifrado;
int n1, n2, n3, n4;
int temp;
n1 = ((original / 1000) + 7) % 10;
n2 = (((original % 1000) / 100) + 7) % 10;
n3 = (((original % 100) / 10) + 7) % 10;
n4 = ((original % 10) + 7) % 10;
temp = n3;
n3 = n1;
n1 = temp;
temp = n4;
n4 = n2;
n2 = temp;
return (n1*1000 + n2*100 + n3*10 + n4);
}
int descifrar(int original)
{
int n1, n2, n3, n4;
int temp;
n1 = original / 1000;
n2 = (original % 1000) / 100;
n3 = (original % 100) / 10;
n4 = (original % 10);
temp = n3;
n3 = n1;
n1 = temp;
temp = n4;
n4 = n2;
n2 = temp;
n1 = procesar(n1);
n2 = procesar(n2);
n3 = procesar(n3);
n4 = procesar(n4);
return n1*1000 + n2*100 + n3*10 + n4;
}
private:
int procesar(int numero)
{
if(numero > 6)
numero -= 7;
else
numero += 3;
return numero;
}
};
int main()
{
Cifrado cifrador;
int numero_cifrar;
int numero_cifrado;
int numero_descifrado;
cout << "Escriba el numero a cifrar: ";
cin >> numero_cifrar;
numero_cifrado = cifrador.cifrar(numero_cifrar);
cout << "\nNumero cifrado: " << numero_cifrado << endl;
numero_descifrado = cifrador.descifrar(numero_cifrado);
cout << "\nNumero descifrado: " << numero_descifrado << endl;
return 0;
}
De antemano muchas gracias. Ah, y también les agradecería si me dieran una opinión del programa, si está bien hecho, si se podría hacer mejor y esas cosillas.
Saludos.