Dev - C++ - Ayuda con este algoritmo e.e

 
Vista:
sin imagen de perfil

Ayuda con este algoritmo e.e

Publicado por Blaky (7 intervenciones) el 04/05/2016 20:05:37
Una compañía desea transmitir datos a través del teléfono, pero le preocupa que sus
teléfonos puedan estar intervenidos. Le ha pedido a usted que escriba un programa que
cifre sus datos, de manera que estos puedan transmitirse con más seguridad. Todos los
datos se transmiten como enteros de cuatro dígitos. Su aplicación debe leer un entero de
cuatro 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 y obtener el residuo después de dividir el nuevo
valor entre 10. Luego intercambie el primer dígito con el tercero, e intercambie el segundo
dígito con el cuarto. Después imprima el entero cifrado. Escriba también una aplicación
separada que reciba como entrada un entero de cuatro dígitos cifrados, y que lo descifre
para formar el número original.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con este algoritmo e.e

Publicado por agustin (522 intervenciones) el 06/05/2016 02:21:34
A ver, lo primero es verificar si el número es de 4 cifras y para ello comprobamos que sea mayor o igual a 1000 y menor o igual a 9999. Si no se cumple esta condición se vuelve a pedir el número.
Ahora necesitamos descomponer el numero:
Imagina que el número es 5678.
Unidades_de_millar = 5678 / 1000= 5
Centenas = (5678 % 1000) / 100 = 6
Decenas = (5678 %100) / 10 = 7
Unidades = % 10

Ahora lo siguiente que te pide es que cada digito le sumes 7 y cálculos el residuo de dividir el resultado entre 10 y ese resultado sustituirá al digito:
Unidades_de_millar = (Unidades_de_millar + 7) % 10 -> seria 2
Centenas = (Centenas + 7) % 10 -> seria 3
Decenas = (Decenas + 7) % 10 -> seria 4
Unidades = (Unidades + 7) % 10 -> seria 5

Lo siguiente que te pide se puede hacer de varias formas pero lo haré de la que creo te será más sencillo entender:
No se exactamente a que se refiere con primer digito pero supongamos que se leen de izquierda a derecha con lo que el primero seria las unidades de millar y el cuarto las unidades.
aux = Unidades_de_millar
Unidades_de_millar = Decenas
Decenas = aux
Con esto ya cambiamos el primero con el tercero.

Ahora hacemos lo propio con los otros dos:
aux = Centenas
Centenas = Unidades
Unidades = aux

Listo, ahora solo falta unir todo otra vez:
Salida = (Unidades_de_millar * 1000) + (Centenas *100) + (Decenas * 10) + Unidades
Nos daría: 4523
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con este algoritmo e.e

Publicado por Blaky (7 intervenciones) el 06/05/2016 06:26:45
Muchas gracias por tu intervencion Agustin tenias razon cuando se refiere a primer digito es la primera cifra de izquierda a derecha me ayudo mucho tu algoritmo ahora solo lo debo pasarlo a codigo fuente gracias de todas formas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar