A cura di: Administrator
/*
* Una azienda vuole trasmettere dei dati sulla linea telefonica,
* ma i suoi responsabili sono preoccupati dal fatto che i propri
* telefoni potrebbero essere spiati. Tutti i loro dati sono
* trasmessi come interi di quattro cifre.
* Vi hanno chiesto di scrivere un programma che crittografi
* i loro dati in modo che possano essere trasmessi con maggior
* sicurezza.
* Il vostro programma dovrà leggere un intero di quattro cifre
* e crittografarlo nel modo seguente: sostituite ogni cifra
* con (la somma di quella cifra + 7) modulo 10. In seguito,
* scambiate la prima cifra con la terza, e scambiate la seconda
* cifra con la quarta. Visualizzate quindi l'intero crittografato.
*/
/*
* SVILUPPO PROGRAMMA
* (mediante processo top-down per raffinamenti successivi)
*
* TOP: prendere un intero in ingresso, crittografarlo, stamparlo
* in output.
*
* RA1: finché intero maggiore 9999 o minore -9999
* stampare messaggio "L'intero deve essere di 4 cifre"
* prendere un intero in ingresso
* cifra_1 = numero / 1000; cifra_1 = (cifra_1 + 7) % 10;
* numero = numero % 1000;
* cifra_2 = numero / 100; cifra_2 = (cifra_2 + 7) % 10;
* numero = numero % 100;
* cifra_3 = numero / 10; cifra_3 = (cifra_3 + 7) % 10;
* numero = numero % 10;
* cifra_4 = numero; cifra_4 = (cifra_4 + 7) % 10;
* cifra_tmp = cifra_1;
* cifra_1 = cifra_3; cifra_3 = cifra_tmp;
* cifra_tmp = cifra_2;
* cifra_2 = cifra_4; cifra_4 = cifra_tmp;
* numero = cifra_4 + cifra_3 * 10 + cifra_2 * 100 + cifra_1 * 1000;
* visualizza numero;
*/
/*
* IMPLEMENTAZIONE
*/
#include <stdio.h>
int
main(void)
{
int cifra_1, cifra_2, cifra_3, cifra_4, cifra_tmp;
int numero = 10000;
while (numero < 0 || numero > 9999) {
printf("\nInserire numero da crittografare: (0000 to 9999): ");
scanf("%d", &numero);
}
cifra_1 = numero / 1000; cifra_1 = (cifra_1 + 7) % 10;
numero %= 1000;
cifra_2 = numero / 100; cifra_2 = (cifra_2 + 7) % 10;
numero %= 100;
cifra_3 = numero / 10; cifra_3 = (cifra_3 + 7) % 10;
numero %= 10;
cifra_4 = numero; cifra_4 = (cifra_4 + 7) % 10;
cifra_tmp = cifra_1;
cifra_1 = cifra_3; cifra_3 = cifra_tmp;
cifra_tmp = cifra_2;
cifra_2 = cifra_4; cifra_4 = cifra_tmp;
printf("Numero crittografato: %d%d%d%d\n",
cifra_1, cifra_2, cifra_3, cifra_4);
return (0);
}
/*
* Scrivete un programma a parte che prenda in input un intero
* crittografato di quattro cifre e lo decifri, in modo da formare
* il numero originale.
*/
#include <stdio.h>
int
main(void)
{
int cifra_1, cifra_2, cifra_3, cifra_4, cifra_tmp;
int numero = 10000;
while (numero < 0 || numero > 9999) {
printf("\nInserire numero da decrittografare: (0000 to 9999): ");
scanf("%d", &numero);
}
/* individua ogni cifra */
cifra_1 = numero / 1000;
numero %= 1000;
cifra_2 = numero / 100;
numero %= 100;
cifra_3 = numero / 10;
numero %= 10;
cifra_4 = numero;
/* scambia la prima con la terza, la seconda con la quarta */
cifra_tmp = cifra_1;
cifra_1 = cifra_3; cifra_3 = cifra_tmp;
cifra_tmp = cifra_2;
cifra_2 = cifra_4; cifra_4 = cifra_tmp;
/* trova cifra originale */
cifra_1 = (cifra_1 - 7); if (cifra_1 < 0) cifra_1 += 10;
cifra_2 = (cifra_2 - 7); if (cifra_2 < 0) cifra_2 += 10;
cifra_3 = (cifra_3 - 7); if (cifra_3 < 0) cifra_3 += 10;
cifra_4 = (cifra_4 - 7); if (cifra_4 < 0) cifra_4 += 10;
printf("Numero decrittografato: %d%d%d%d\n",
cifra_1, cifra_2, cifra_3, cifra_4);
return (0);
}