Concetti Chiave
- Il programma crittografa un intero di quattro cifre per garantire la sicurezza nella trasmissione dei dati.
- Ogni cifra viene modificata con la formula (cifra + 7) modulo 10 per creare un numero crittografato.
- Le cifre del numero crittografato vengono scambiate: la prima con la terza e la seconda con la quarta.
- Un programma separato è incluso per decrittografare il numero e riportarlo al formato originale.
- Se l'input non è valido, viene visualizzato un messaggio che richiede un intero di quattro cifre.
/* * 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 è l'obiettivo principale del programma descritto nel testo?
- Come viene gestito l'input dell'utente nel programma?
- Qual è il metodo utilizzato per crittografare le cifre?
- Come viene effettuata la decrittografia del numero?
- Quali sono le limitazioni imposte all'input dell'utente?
L'obiettivo principale del programma è crittografare un intero di quattro cifre per garantire una trasmissione più sicura dei dati, sostituendo ogni cifra con (cifra + 7) modulo 10 e scambiando le posizioni delle cifre.
Il programma richiede all'utente di inserire un intero di quattro cifre e continua a chiedere l'input finché il numero non è compreso tra 0000 e 9999, visualizzando un messaggio di errore in caso contrario.
Ogni cifra dell'intero viene sostituita con (cifra + 7) modulo 10, e successivamente le cifre vengono scambiate: la prima con la terza e la seconda con la quarta.
Per decrittografare il numero, il programma scambia nuovamente le cifre e sottrae 7 da ciascuna cifra, gestendo i valori negativi aggiungendo 10 per ottenere la cifra originale.
L'input dell'utente è limitato a numeri interi di quattro cifre, ovvero compresi tra 0000 e 9999, per garantire che il programma funzioni correttamente.