Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Desencriptar un numero en c

Estas en el tema de Desencriptar un numero en c en el foro de C/C++ en Foros del Web. Estoy haciendo un ejercicio que pide que introduzca un numero de 4 dígitos, y que encripte el entero reemplazando cada dígito con el residuo de ...
  #1 (permalink)  
Antiguo 13/02/2015, 00:35
 
Fecha de Ingreso: febrero-2015
Mensajes: 20
Antigüedad: 9 años, 2 meses
Puntos: 0
Pregunta Desencriptar un numero en c

Estoy haciendo un ejercicio que pide que introduzca un numero de 4 dígitos, y que encripte el entero reemplazando cada dígito con el residuo de la división entre 10 de la suma de dicho dígito mas 7, y que luego reemplace el primer dígito con el tercero, y el segundo con el cuarto para desplegar el nuevo valor:
Código:
#include <stdio.h>

int main ()
{
	int numero;
	int n1, n2, n3, n4;
	
	printf("Introduzca el dato de 4 digitos: ");
	scanf("%d", &numero);
	
	n4 = numero % 10;
	numero /=10;
	n3 = numero % 10;  //separando digitos
	numero /=10;
	n2 = numero % 10;
	n1 = numero / 10;
	
	n1 += 7;
	n2 += 7;
	n3 += 7;      //sumandoles 7
	n4 += 7;
	
	n1 %= 10;
	n2 %= 10;
	n3 %= 10;   //sacando residuo
	n4 %= 10;
	
	printf("%d%d%d%d\n", n3, n4, n1, n2);  //devolviendo dato encriptado
	
	system ("pause");
	return 0;
	
	
}
La duda que tengo es que ahora no se como desencriptarlo, por ejemplo si en el primer programa pongo 1234, me devuelve 0189, y este mismo numero me tiene que devolver 1234 en el otro programa, pero no lo he conseguido:

Código:
#include <stdio.h>

int main ()
{
	int numero;
	int n1, n2, n3, n4;
	
	printf("Introduzca numero encriptado: ");
	scanf("%d", &numero);
	
	n4 = numero % 10;
	numero /= 10;
	n3 = numero % 10;
	numero /= 10;          //separando digitos
	n2 = numero % 10;
	n1 = numero / 10;
	
	n4 -= 7;
	n3 -= 7;
	n2 -= 7;         
	n1 -= 7;
	
	
    n4 %= 10;
	n3 %= 10;
	n2 %= 10;
	n1 %= 10;
	

	printf("%d%d%d%d\n", n3, n4, n1, n2);
	
	system ("pause");
	return 0;
}
Quisiera que me dieran una pista, o me corrijan si ando mal en algo, porque ya he intentado de varias formas y no me da. Gracias!
  #2 (permalink)  
Antiguo 13/02/2015, 00:49
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Desencriptar un numero en c

Realizando la operación inversa:

* Coges 0189 e intercambias los dígitos 1-3 y 2-4. Te queda 8901.
* Ahora coges cada dígito y le restas 7. Si el resultado es negativo, sumas 10 ( 8 - 7 = 1, 9 - 7 = 2, 0 - 7 + 10 = 3, 1 - 7 + 10 = 4 ).

Realizando la operación complementaria:

* Coges 0189 e intercambias los dígitos 1-3 y 2-4. Te queda 8901.
* Ahora coges cada dígito y le sumas 3 ( 7 + 3 = 10 -> 10 es el divisor que has usado antes para sacar el módulo ), y calculas el residuo de la división entre 10: ( 8 + 3 % 10= 11 % 10 = 1, 9 + 3 % 10 = 12 % 10 = 2, 0 + 3 % 10 = 3 % 10 = 3, 1 + 3 % 10 = 4 % 10 = 4 ).

Un saludo.

Etiquetas: desencriptar, int, numero, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:25.