|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2004
Città: Pianeta Terra
Messaggi: 1593
|
[C] problema esercizio semplice
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' Codice:
#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;
}
Ora devo fare il procedimento inverso...solo che ho dei problemi... non mi funziona come vorrei... Io l'ho scritto cosi': Codice:
#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;
}
Codice:
$ ./crittog Inserire un numero di 4 cifre:1234 0189 $ ./decripter Inserire un numero di 4 cifre:0189 203905919711311530503-91076686 mi aiutate
__________________
|Antec Nine Hundred by me~LC Titan 560W~Asus P5QD Turbo~Intel Q9550~Corsair Dominator xms2-8500~Sapphire HD5870~SB Audigy X-Fi XtremeGamer~Samsung 320Gb sataII~LG dvd-rw~2xAcer P193w + Samsung SM 2243SN~Logitech z-5300~|Notebook MSI S271| Fastweb 20Mb ~ BOINC GOD - 15 UOTD |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Allora:
- In primo luogo, ti consiglio di studiare gli array; ti risparmieresti un sacco di codice da scrivere. Per scrivere un semplice programmino hai dovuto incollare una pagina di codice, non ti pare un po' troppo? - L'errore è qui, ed è duplice: Codice:
crit4 = num/1000; crit3 = num/100 - cif4 * 10; crit2 = num/10 - cif3 * 10 - cif4 * 100; crit1 = num/1 - cif2 * 10 - cif3 * 100 - cif4 * 1000; Codice:
cif1 = cif2 = cif3 = cif4 = 0 ; Lo stesso vale per crit2 e crit1: devi sempre usare critX, e non cifX nelle espressioni a destra dell'uguale Impara ad usare gli array! Ciao
__________________
Il sole è giallo |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2004
Città: Pianeta Terra
Messaggi: 1593
|
A parte che sono un pirla e tu hai ragione
Non ho utilizzato gli array perche' l'esercizio non richiedeva l'utilizzo di array... cioe' dovevo farlo solo e soltanto con l'if e il while.. grazie mille!
__________________
|Antec Nine Hundred by me~LC Titan 560W~Asus P5QD Turbo~Intel Q9550~Corsair Dominator xms2-8500~Sapphire HD5870~SB Audigy X-Fi XtremeGamer~Samsung 320Gb sataII~LG dvd-rw~2xAcer P193w + Samsung SM 2243SN~Logitech z-5300~|Notebook MSI S271| Fastweb 20Mb ~ BOINC GOD - 15 UOTD |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:59.



















