Linguaggio C: un semplice programma di crittografia - Studentville

Linguaggio C: un semplice programma di crittografia

esercizio svolto o teoria

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

Ti potrebbe interessare

Link copiato negli appunti