|
|
|
![]() |
|
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: 07:24.