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%dn", 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%dn", cifra_1, cifra_2, cifra_3, cifra_4); return (0); }
- Programmazione