Ejercicio:
Citar
(criptografía) Una compañía desea transmitir datos a través del teléfono, pero le preocupa que sus teléfonos puedan estar intervenidos. Todos los datos se transmiten como enteros de cuatro dígitos. La compañía le ha pedido a usted que escriba un programa que cifre sus datos, de manera que éstos puedan transmitirse con más seguridad. Su programa debe leer un entero de acuatro dígitos introducido por el usuario y cifrarlo de la siguiente manera: reemplace cada dígito con (el resultado de sumar 7 al dígito) modulo 10. Luego intercambie el primer dígito con el tercero, e intercambie el segundo dígito con el cuarto. Después imprima un programa separado que reciba como entrada un entero de cuatro dígitos cifrado, y que lo descifre para formar el número original.
Ok, una vez ya sabido el ejercicio en el cifrador el código que hice fue el siguiente: (dejo lo más importante)
Código
int digito1, digito2, digito3, digito4; int sobra; digito1= numeroIngresado / 1000; sobra= numeroIngresado % 1000; digito2= sobra / 100; sobra= sobra % 100; digito3= sobra / 10; digito4= sobra %10; digito1= ((digito1 + 7) % 10); digito2= ((digito2 + 7) % 10); digito3= ((digito3 + 7) % 10); digito4= ((digito4 +7 ) % 10); cout <<"\nNumero Cifrado: " <<digito3 <<digito4 <<digito1 <<digito2;
Hasta aquí todo esta bién, por ejemplo ingresando el número 9456 me cifra el número y lo imprime: 2361
Bueno, ahora iría el código del programa que descifra y muestra el número original (nuevamente dejo lo más importante):
Código
double digito1,digito2,digito3,digito4; int resto; digito1= numeroCifrado / 1000; resto= numeroCifrado % 1000; digito2= resto / 100; resto= resto % 100; digito3= resto / 10; digito4= resto % 10; digito1+=3; digito2+=3; digito3+=3; digito4+=3; cout <<"Numero Descifrado: " <<digito3 <<digito4 <<digito1 <<digito2 <<endl;
Si ingreso el número cifrado (2361) me devuelve el número original...
Pero si en el cifrador hubiera puesto como número original 2361 el programa lo hubiera cifrado a: 3890
El descifrador me devuelve el número "original" como: 123611
Esto sucede a que al sumarle 3 en el descifrador se hace mayor a 9, yo lo hice así (osea sumandole 3) por la siguiente razón...
9 4 5 6
(9 + 7) % 10= 1.6
(4 + 7) % 10= 1.1
(5 + 7) % 10= 1.2
(6 + 7) % 10= 1.3
Entonces me di cuenta que para del resultado por ejemplo 1.6 había que sumarle 3 al resto osea 6 +3= 9 al igual que 1 +3 = 4, etc
Desde ya muchas gracias por cualquier ayuda