"Una azienda vuole trasmettere dei dati sulla linea telefonica, ma tutti i suoi responsabili sono preoccupati dal fatto che i propri telefoni potrebberero essere spiati. Tutti i loro dati sono trasmessi come interi di quattro cifre. Vi hanno quindi chiesto di scrivere un programma che crittografi i loro dati cosicchè da trasmetterli in sicurezza. Il vostro programma dovrà leggere un intero di quattro cifre e crittografarlo nel modo seguente: sostituite ogni cifra on il resto ottenuto dalla divisione di (la somma di quella cifra più 7) per 10. In seguito, scambiate la prima cifra con la terza, e la seconda con la quarta. Visualizzate quindi l'intero crittografato. Scrivete un programma che prenda in input un intero crittografato di quattro cifre e lo decifri, in modo da formare il numero originale."
Ecco i sorgenti che ho scritto, ma che a qunto pare non funzionano:
Programma crittografante (penso funzioni):
Codice: Seleziona tutto
#include<stdio.h>
int num,c1,c2,c3,c4;
int cp,cp2;
main(){
printf("Inserisci un intero di quattro cifre: ");
scanf("%d",&num);
c4= num % 10; */ Assegno il valore di ogni singola cifra alle variabili cX */
c3=(num % 100 -c4)/10;
c2=(num % 1000 -c3)/100;
c1=(num % 10000 -c2)/1000;
printf("Le quattro cifre sono : %d %d %d %d.\n",c1,c2,c3,c4); */ Verifico che l'assegnazione precedente sia esatta */
c1=(c1+7)%10; */Inizio la fase di criptazione*/
c2=(c2+7)%10;
c3=(c3+7)%10;
c4=(c4+7)%10;
printf("Le 4 cifre sono: %d %d %d %d.\n",c1,c2,c3,c4); */Verifico quali sono le 4 cifre criptate */
cp=c1; */ Sostituisco la prima con la terza e la seconda con la quarta */
c1=c3;
c3=cp;
cp2=c2;
c2=c4;
c4=cp2;
printf("Il numero crittografato è: %d%d%d%d.\n",c1,c2,c3,c4);
return 0;
}Codice: Seleziona tutto
int num,c1,c2,c3,c4;
int cp,cp2;
int p1,p2,p3,p4;
int d1,d2,d3,d4;
main(){
printf("Inserisci un intero di quattro cifre: ");
scanf("%d",&num);
c4= num % 10; */Assegno alle variabili cX il valore di ogni singola cifra */
c3=(num % 100 -c4)/10;
c2=(num % 1000 -c3)/100;
c1=(num % 10000 -c2)/1000;
printf("Le quattro cifre sono : %d %d %d %d.\n",c1,c2,c3,c4);
cp=c1; */Sostituisco la prima cifra con la terza e la seconda con la quarta (procedendo in modo inverso al programma precedente */
c1=c3;
c3=cp;
cp2=c2;
c2=c4;
c4=cp2;
printf("Le 4 cifre invertite sono: %d %d %d %d.\n",c1,c2,c3,c4); */Mi accerto che le cire siano state invertite */
p1=(c1+7)%10; */Ora calcolo il resto della divisione di cX e 10*/
p2=(c2+7)%10;
p3=(c3+7)%10;
p4=(c4+7)%10;
d1=(c1+7)/10; */Ora calcolo il quoziente della divisione cX/10*/
d2=(c2+7)/10;
d3=(c3+7)/10;
d4=(c4+7)/10;
c1=((d1*10)+p1)-7; */Conoscendo il quoziente ed il resto, risalgo al dividendo */
c2=((d2*10)+p2)-7;
c3=((d3*10)+p3)-7;
c4=((d4*10)+p3)-7;
printf("Il numero decifrato è: %d%d%d%d.\n",c1,c2,c3,c4); */Visualizzo il numero decirato*/
return 0;
}Ciao e grazie per un eventuale aiuto...
