Concetti Chiave
- Il programma crittografa un intero di quattro cifre sommando 7 a ciascuna cifra e applicando il modulo 10.
- Dopo la crittografia, le cifre vengono scambiate: la prima con la terza e la seconda con la quarta.
- Il programma include un controllo per assicurarsi che l'input sia un intero di quattro cifre.
- È previsto un programma separato per decrittografare l'intero crittografato e ottenere il numero originale.
- La decrittografia comporta lo scambio delle cifre e la sottrazione di 7 da ciascuna cifra, con un controllo per le cifre negative.
/* * 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 */ #includeint main(void) { int cifra_1, cifra_2, cifra_3, cifra_4, cifra_tmp; int numero = 10000; while (numero 9999) { printf("
Inserire 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
", 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. */ #includeint main(void) { int cifra_1, cifra_2, cifra_3, cifra_4, cifra_tmp; int numero = 10000; while (numero 9999) { printf("
Inserire 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 ", cifra_1, cifra_2, cifra_3, cifra_4); return (0); }
Domande da interrogazione
- Qual è lo scopo principale del programma descritto nel testo?
- Come viene crittografato un numero di quattro cifre nel programma?
- Qual è la condizione per l'accettazione del numero da crittografare?
- Come viene decifrato un numero crittografato secondo il programma?
- Qual è il messaggio visualizzato se l'input non è un intero di quattro cifre?
Il programma è progettato per crittografare un intero di quattro cifre per trasmetterlo in modo sicuro su una linea telefonica, proteggendo i dati da eventuali intercettazioni.
Ogni cifra del numero viene sostituita con (la somma di quella cifra + 7) modulo 10, poi la prima cifra viene scambiata con la terza e la seconda con la quarta.
Il numero deve essere un intero di quattro cifre, compreso tra 0000 e 9999.
Il programma scambia nuovamente le cifre (prima con terza, seconda con quarta) e poi sottrae 7 da ciascuna cifra, correggendo con modulo 10 se necessario, per ottenere il numero originale.
Il programma stampa "L'intero deve essere di 4 cifre" e richiede nuovamente l'inserimento di un numero valido.