Programma cifratura

di il
34 risposte

34 Risposte - Pagina 3

  • Re: Programma cifratura

    Ecco fatto.
    Avevi solo sbagliato le parentesi credo. Il resto era OK.
    
    if ((c >= 'A') && (c <= 'Z'))
    		{
    			c=(c+k) % ('Z'+ 1);
    			if(c < 'A')
    				c = c + 'A';
    		}
    		else 
    		{
    			if( c>= 'a' && c <= 'z') 
    			{
    				c= (c - ('a' - 'A') + k) % ('Z'+1);
    				if(c < 'A')
    					c = c+ 'A';
    			}
    			else 
    			{
    				if((int(c) >= 48) && (int(c) <= 57))
    				{
    					c= ((c+k)%('9'+1)) % 10;
    					if(c < '0')
    						c = c + '0';
    				}
    			}
    		}
    
  • Re: Programma cifratura

    Finalmente posso dire che funziona perfettamente:ancora una volta mi ero dimenticato di scrivere la riga c = c + 'A'.
    Grazie ancora per il tuo preziosissimo aiuto!!!
  • Re: Programma cifratura

    Ok, io arrivo tardi...ma non ho ben capito, ok che se metto quei codici mi funziona e serve per farli restare nel range ma cosa fa questo operatore % esattamente?!
    Perchè...io sapevo che mi dava il resto di una divisione, ma non capisco cosa centri calcolare il resto con il far restare il tutto nel range
    E nemmeno perchè nei numeri metto sia % ( '9' + 1) che %10...non è come se facessi la stessa operazione due volte?!

    skynet ha scritto:


    Sommo perche se nel caso la somma c+k supera Z il modulo lo fa diventare un numero compreso tra 0 (numero) e Z. Per farlo stare nel range A-Z li sommo A. Sta cosa non è indispensabile se il modulo pruduce un valore compreso tra A e Z.
    E poi questa cosa della somma non l'ho capita...cioè...se c + k supera Z, e nell'if metto il carattere minore di A?!

    Help, please!
  • Re: Programma cifratura

    Allora iniziamo da capo:
    l'operatore modulo fa si che una espressione x % y produca valori da 0 a y-1. Ci sei fin quà.
    Nel nostro esempio dei numeri:

    x % ('9' + 1) = x % (valore ascii di 9 + il numero 1) = x % (57+1) = x % 58.
    Chiamiamo questo risultato result x semplicità.
    Result = un valore da 0 a 58-1 quindi da 0 a 57.
    Siccome i numeri sono da 0 a 10 faccendo (result % 10) il risultato sarà compreso tra 0 e 9.
    Siccome il carattere Zero ('0') ha valore ascii 48 noi portiamo questo risulatato a stare nel range 48-57 e lo facciamo aggiungendo al risulato il 48 cioè il carattere ascii '0'. Chiaro?
    La stessa cosa viene fatta x i caratteri.
  • Re: Programma cifratura

    Si!! Ora ho capito =) Grazie mille!!
Devi accedere o registrarti per scrivere nel forum
34 risposte