nongio
11-10-2007, 10:43
Ciao a tutti, ho da fare un esercizio che prende in input un numero di 4 cifre, devo decriptarlo nel seguente modo:
Prendere ogni cifra e modificarla cosi : sommare la cifra a 7 e dividere per 10, utilizzare il resto della divisione come numero cifrato, e scambiare la 4a cifra con la seconda e la 3a con la prima...
io l'ho fatto cosi'
#include <stdio.h>
int main ()
{
int num;
int cif1;
int cif2;
int cif3;
int cif4;
int crit1;
int crit2;
int crit3;
int crit4;
printf ("Inserire un numero di 4 cifre:");
scanf ("%d", &num);
while (num != -1)
{
cif4 = num/1000;
cif3 = num/100 - cif4 * 10;
cif2 = num/10 - cif3 * 10 - cif4 * 100;
cif1 = num/1 - cif2 * 10 - cif3 * 100 - cif4 * 1000;
crit4 = (cif4 + 7) % 10;
crit3 = (cif3 + 7) % 10;
crit2 = (cif2 + 7) % 10;
crit1 = (cif1 + 7) % 10;
printf ("%d%d%d%d\n\n", crit2, crit1, crit4, crit3);
printf ("Inserire un numero di 4 cifre:");
scanf ("%d", &num);
}
return 0;
}
Questo funziona...
Ora devo fare il procedimento inverso...solo che ho dei problemi... non mi funziona come vorrei...
Io l'ho scritto cosi':
#include <stdio.h>
int main ()
{
int num;
int cif1;
int cif2;
int cif3;
int cif4;
int crit1;
int crit2;
int crit3;
int crit4;
printf ("Inserire un numero di 4 cifre:");
scanf ("%d", &num);
while (num != -1)
{
crit4 = num/1000;
crit3 = num/100 - cif4 * 10;
crit2 = num/10 - cif3 * 10 - cif4 * 100;
crit1 = num/1 - cif2 * 10 - cif3 * 100 - cif4 * 1000;
if (crit4 >= 7)
{
cif4 = crit4 -7;
}
else
{
cif4 = crit4 + 10 -7;
}
if ( crit3 >= 7)
{
cif3 = crit3 -7;
}
else
{
cif3 = crit3 +10 -7;
}
if (crit2 >= 7)
{
cif2 = crit2 -7;
}
else
{
cif2 = crit2 +10-7;
}
if (crit1 >=7)
{
cif1 = crit1 -7;
}
else
{
cif1 = crit1 +10 -7;
}
printf ("%d%d%d%d\n\n", cif2, cif1, cif4, cif3);
printf ("Inserire un numero di 4 cifre:");
scanf ("%d", &num);
}
return 0;
}
vi posto un esempio di quel che succede
$ ./crittog
Inserire un numero di 4 cifre:1234
0189
$ ./decripter
Inserire un numero di 4 cifre:0189
203905919711311530503-91076686
non torna 1234!!!!!!!!!!!!!!!!!!!!!
mi aiutate :help: :muro:
Prendere ogni cifra e modificarla cosi : sommare la cifra a 7 e dividere per 10, utilizzare il resto della divisione come numero cifrato, e scambiare la 4a cifra con la seconda e la 3a con la prima...
io l'ho fatto cosi'
#include <stdio.h>
int main ()
{
int num;
int cif1;
int cif2;
int cif3;
int cif4;
int crit1;
int crit2;
int crit3;
int crit4;
printf ("Inserire un numero di 4 cifre:");
scanf ("%d", &num);
while (num != -1)
{
cif4 = num/1000;
cif3 = num/100 - cif4 * 10;
cif2 = num/10 - cif3 * 10 - cif4 * 100;
cif1 = num/1 - cif2 * 10 - cif3 * 100 - cif4 * 1000;
crit4 = (cif4 + 7) % 10;
crit3 = (cif3 + 7) % 10;
crit2 = (cif2 + 7) % 10;
crit1 = (cif1 + 7) % 10;
printf ("%d%d%d%d\n\n", crit2, crit1, crit4, crit3);
printf ("Inserire un numero di 4 cifre:");
scanf ("%d", &num);
}
return 0;
}
Questo funziona...
Ora devo fare il procedimento inverso...solo che ho dei problemi... non mi funziona come vorrei...
Io l'ho scritto cosi':
#include <stdio.h>
int main ()
{
int num;
int cif1;
int cif2;
int cif3;
int cif4;
int crit1;
int crit2;
int crit3;
int crit4;
printf ("Inserire un numero di 4 cifre:");
scanf ("%d", &num);
while (num != -1)
{
crit4 = num/1000;
crit3 = num/100 - cif4 * 10;
crit2 = num/10 - cif3 * 10 - cif4 * 100;
crit1 = num/1 - cif2 * 10 - cif3 * 100 - cif4 * 1000;
if (crit4 >= 7)
{
cif4 = crit4 -7;
}
else
{
cif4 = crit4 + 10 -7;
}
if ( crit3 >= 7)
{
cif3 = crit3 -7;
}
else
{
cif3 = crit3 +10 -7;
}
if (crit2 >= 7)
{
cif2 = crit2 -7;
}
else
{
cif2 = crit2 +10-7;
}
if (crit1 >=7)
{
cif1 = crit1 -7;
}
else
{
cif1 = crit1 +10 -7;
}
printf ("%d%d%d%d\n\n", cif2, cif1, cif4, cif3);
printf ("Inserire un numero di 4 cifre:");
scanf ("%d", &num);
}
return 0;
}
vi posto un esempio di quel che succede
$ ./crittog
Inserire un numero di 4 cifre:1234
0189
$ ./decripter
Inserire un numero di 4 cifre:0189
203905919711311530503-91076686
non torna 1234!!!!!!!!!!!!!!!!!!!!!
mi aiutate :help: :muro: