Stavolta mi sono cimentato in qualcosa di più interessante (almeno per me ), ho dovuto scrivere un programma che crittografasse un numero di 4 cifre con la seguente procedura (Dividere il numero in singole cifre ed applicare ad ogni cifra la seguente espressione (x + 7) % 10) e che stampasse in numero dopo la codifica. Poi creare un ulteriore programma per la decrittazione degli stessi numeri ottenuti con il precedente programma.
Ora, ho scritto entrambi i programmi, e funzionano, però volevo ampliarli per evitare di dover inserire soltanto numeri da 4 cifre, e cosi mi è venuto fuori questo:
PROGRAMMA DI CRITTOGRAFIA
#include <iostream>
using namespace std;
int main()
{
cout << "Questo Programma riceve un numero intero e ne effettua una codifica." << endl;
int intero;
int cifra1, cifra2, cifra3, cifra4, cifra5, cifra6, cifra7 = 0;
cout << "\nInerisci il numero: ";
cin >> intero;
if (intero <= 9)
{
cifra1 = intero % 10;
cifra1 += 7;
cifra1 %= 10;
cout << endl;
cout << "Il numero crittografato e': ";
cout << cifra1;
cout << endl;
}
else if (intero <= 99)
{
cifra1 = (intero / 10) % 10;
cifra1 += 7;
cifra1 %= 10;
cifra2 = intero % 10;
cifra2 += 7;
cifra2 %= 10;
cout << endl;
cout << "Il numero crittografato e': ";
cout << cifra1;
cout << cifra2;
cout << endl;
}
else if (intero <= 999)
{
cifra1 = (intero / 100) % 10;
cifra1 += 7;
cifra1 %= 10;
cifra2 = (intero / 10) % 10;
cifra2 += 7;
cifra2 %= 10;
cifra3 = intero % 10;
cifra3 += 7;
cifra3 %= 10;
cout << endl;
cout << "Il numero crittografato e': ";
cout << cifra1;
cout << cifra2;
cout << cifra3;
cout << endl;
}
else if (intero <= 9999)
{
cifra1 = (intero / 1000) % 10;
cifra1 += 7;
cifra1 %= 10;
cifra2 = (intero / 100) % 10;
cifra2 += 7;
cifra2 %= 10;
cifra3 = (intero / 10) % 10;
cifra3 += 7;
cifra3 %= 10;
cifra4 = intero % 10;
cifra4 += 7;
cifra4 %= 10;
cout << endl;
cout << "Il numero crittografato e': ";
cout << cifra1;
cout << cifra2;
cout << cifra3;
cout << cifra4;
cout << endl;
}
else if (intero <= 99999)
{
cifra1 = (intero / 10000) % 10;
cifra1 += 7;
cifra1 %= 10;
cifra2 = (intero / 1000) % 10;
cifra2 += 7;
cifra2 %= 10;
cifra3 = (intero / 100) % 10;
cifra3 += 7;
cifra3 %= 10;
cifra4 = (intero / 10) % 10;
cifra4 += 7;
cifra4 %= 10;
cifra5 = intero % 10;
cifra5 += 7;
cifra5 %= 10;
cout << endl;
cout << "Il numero crittografato e': ";
cout << cifra1;
cout << cifra2;
cout << cifra3;
cout << cifra4;
cout << cifra5;
cout << endl;
}
else if (intero <= 999999)
{
cifra1 = (intero / 100000) % 10;
cifra1 += 7;
cifra1 %= 10;
cifra2 = (intero / 10000) % 10;
cifra2 += 7;
cifra2 %= 10;
cifra3 = (intero / 1000) % 10;
cifra3 += 7;
cifra3 %= 10;
cifra4 = (intero / 100) % 10;
cifra4 += 7;
cifra4 %= 10;
cifra5 = (intero / 10) % 10;
cifra5 += 7;
cifra5 %= 10;
cifra6 = intero % 10;
cifra6 += 7;
cifra6 %= 10;
cout << endl;
cout << "Il numero crittografato e': ";
cout << cifra1;
cout << cifra2;
cout << cifra3;
cout << cifra4;
cout << cifra5;
cout << cifra6;
cout << endl;
}
else if (intero <= 9999999)
{
cifra1 = (intero / 1000000) % 10;
cifra1 += 7;
cifra1 %= 10;
cifra2 = (intero / 100000) % 10;
cifra2 += 7;
cifra2 %= 10;
cifra3 = (intero / 10000) % 10;
cifra3 += 7;
cifra3 %= 10;
cifra4 = (intero / 1000) % 10;
cifra4 += 7;
cifra4 %= 10;
cifra5 = (intero / 100) % 10;
cifra5 += 7;
cifra5 %= 10;
cifra6 = (intero / 10) % 10;
cifra6 += 7;
cifra6 %= 10;
cifra7 = intero % 10;
cifra7 += 7;
cifra7 %= 10;
cout << endl;
cout << "Il numero crittografato e': ";
cout << cifra1;
cout << cifra2;
cout << cifra3;
cout << cifra4;
cout << cifra5;
cout << cifra6;
cout << cifra7;
cout << endl;
}
else
{
cout << "\nInserito valore superiore alle 7 cifre. Riprovare con uno piu' piccolo." << endl;
}
return 0;
}
PROGRAMMA DI DECRITTOGRAFIA
#include <iostream>
using namespace std;
int main()
{
cout << "Questo programma decodifica i numeri crittografati, restituendo il loro valore originario." << endl;
int intero;
int cifra1, cifra2, cifra3, cifra4, cifra5, cifra6, cifra7 = 0;
cout << "\nInerisci il numero da decifrare: ";
cin >> intero;
if (intero <=9)
{
cifra1 = intero % 10;
if (cifra1 <= 6)
{
cifra1 += 10;
}
cifra1 -= 7;
cout << endl;
cout << "Il numero decodificato e': ";
cout << cifra1 << " ";
}
else if (intero <= 99)
{
cifra1 = (intero / 10) % 10;
if (cifra1 <= 6)
{
cifra1 += 10;
}
cifra1 -= 7;
cifra2 = intero % 10;
if (cifra2 <= 6)
{
cifra2 += 10;
}
cifra2 -= 7;
cout << endl;
cout << "Il numero decodificato e': ";
cout << cifra1 << " ";
cout << cifra2 << " ";
}
else if (intero <= 999)
{
cifra1 = (intero / 100);
if (cifra1 <= 6)
{
cifra1 += 10;
}
cifra1 -= 7;
cifra2 = (intero / 10) % 10;
if (cifra2 <= 6)
{
cifra2 += 10;
}
cifra2 -= 7;
cifra3 = intero % 10;
if (cifra3 <= 6)
{
cifra3 += 10;
}
cifra3 -= 7;
cout << endl;
cout << "Il numero decodificato e': ";
cout << cifra1 << " ";
cout << cifra2 << " ";
cout << cifra3 << " ";
}
else if (intero <= 9999)
{
cifra1 = (intero / 1000);
if (cifra1 <= 6)
{
cifra1 += 10;
}
cifra1 -= 7;
cifra2 = (intero / 100) % 10;
if (cifra2 <= 6)
{
cifra2 += 10;
}
cifra2 -= 7;
cifra3 = (intero / 10) % 10;
if (cifra3 <= 6)
{
cifra3 += 10;
}
cifra3 -= 7;
cifra4 = intero % 10;
if (cifra4 <= 6)
{
cifra4 += 10;
}
cifra4 -= 7;
cout << endl;
cout << "Il numero decodificato e': ";
cout << cifra3 << " ";
cout << cifra4 << " ";
cout << cifra1 << " ";
cout << cifra2 << " ";
}
else if (intero <= 99999)
{
cifra1 = (intero / 10000);
if (cifra1 <= 6)
{
cifra1 += 10;
}
cifra1 -= 7;
cifra2 = (intero / 1000) % 10;
if (cifra2 <= 6)
{
cifra2 += 10;
}
cifra2 -= 7;
cifra3 = (intero / 100) % 10;
if (cifra3 <= 6)
{
cifra3 += 10;
}
cifra3 -= 7;
cifra4 = (intero / 10) % 10;
if (cifra4 <= 6)
{
cifra4 += 10;
}
cifra4 -= 7;
cifra5 = intero % 10;
if (cifra5 <= 6)
{
cifra5 += 10;
}
cifra5 -= 7;
cout << endl;
cout << "Il numero decodificato e': ";
cout << cifra1 << " ";
cout << cifra2 << " ";
cout << cifra3 << " ";
cout << cifra4 << " ";
cout << cifra5 << " ";
}
else if (intero <= 999999)
{
cifra1 = (intero / 100000);
if (cifra1 <= 6)
{
cifra1 += 10;
}
cifra1 -= 7;
cifra2 = (intero / 10000) % 10;
if (cifra2 <= 6)
{
cifra2 += 10;
}
cifra2 -= 7;
cifra3 = (intero / 1000) % 10;
if (cifra3 <= 6)
{
cifra3 += 10;
}
cifra3 -= 7;
cifra4 = (intero / 100) % 10;
if (cifra4 <= 6)
{
cifra4 += 10;
}
cifra4 -= 7;
cifra5 = (intero / 10) % 10;
if (cifra5 <= 6)
{
cifra5 += 10;
}
cifra5 -= 7;
cifra6 = intero % 10;
if (cifra6 <= 6)
{
cifra6 += 10;
}
cifra6 -= 7;
cout << endl;
cout << "Il numero decodificato e': ";
cout << cifra1 << " ";
cout << cifra2 << " ";
cout << cifra3 << " ";
cout << cifra4 << " ";
cout << cifra5 << " ";
cout << cifra6 << " ";
}
else if (intero <= 9999999)
{
cifra1 = (intero / 1000000);
if (cifra1 <= 6)
{
cifra1 += 10;
}
cifra1 -= 7;
cifra2 = (intero / 100000) % 10;
if (cifra2 <= 6)
{
cifra2 += 10;
}
cifra2 -= 7;
cifra3 = (intero / 10000) % 10;
if (cifra3 <= 6)
{
cifra3 += 10;
}
cifra3 -= 7;
cifra4 = (intero / 1000) % 10;
if (cifra4 <= 6)
{
cifra4 += 10;
}
cifra4 -= 7;
cifra5 = (intero / 100) % 10;
if (cifra5 <= 6)
{
cifra5 += 10;
}
cifra5 -= 7;
cifra6 = (intero / 10) % 10;
if (cifra6 <= 6)
{
cifra6 += 10;
}
cifra6 -= 7;
cifra7 = intero % 10;
if (cifra7 <= 6)
{
cifra7 += 10;
}
cifra7 -= 7;
cout << endl;
cout << "Il numero decodificato e': ";
cout << cifra1 << " ";
cout << cifra2 << " ";
cout << cifra3 << " ";
cout << cifra4 << " ";
cout << cifra5 << " ";
cout << cifra6 << " ";
cout << cifra7 << " ";
}
else
{
cout << "\nInserito valore superiore alle 7 cifre. Riprovare con uno piu' piccolo." << endl;
}
return 0;
}
Pensate sia possibile ridurre il codice, visto che cosi per un paio di operazioni ho dovuto scrivere 300 e passa righe