Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Salve a tutti,
con questo codice voglio semplicemente andare a sostituire le lettere di un testo dato con il numero che corrisponde alla loro posizione nell'alfabeto.
Il codice è scritto in Ruby ma la sua sintassi semplice rende la comprensione immediata anche a chi non lo conosce.
ho pensato di usare i primi tre elementi solo per vedere se il confronto funzionava e solo dopo volevo andare a rendere variabile anche il numero da inserire in modo da non dover fare un if per ogni lettera, comunque il codice non funziona, se inserisco a b c d invece di 1 2 3 4 mi ridà 4 4 4 4 4 4 4.
Grazie in anticipo.
Ultima modifica effettuata da Il Totem il 28/10/2011 alle 11:50
Ciao!
Il programma non funziona perché ogni carattere di codice, va controllato separatamente.
Ti consiglio di far riferimento al codice ASCII.
Faccio presente che mi sono scordato di convertire codice in un array comunque non gira ugale ma usando il tuo suggerimento va, potresti dirmi il motivo? , e per far riferimento al ASCII intendi di convertire il codice in appunto ASCII? - anomalo - 28/10/11 11:55
Non so cosa tu abbia inserito, ma l'output per "a b c d" è "1 1 1 1 1 1 1" e non "4 4 4 4 4 4 4". Infatti, quando entri nel while, il primo if è verificato, poiché il primo carattere di codice è "a" e così anche il primo elemento di array0. Quindi esegui l'istruzione ncodice << 1 e passi all'iterazione successiva. Nota bene che NON hai incrementato la variabile contatore i. Perciò, se non esistesse il controllo sulla lunghezza delle stringhe, il tuo codice andrebbe in loop.
Altra cosa: anche se il corpo del while fosse corretto, il programma non funzionerebbe comunque, poiché le lunghezze di ncodice e codice non sono a priori uguali (infatti l viene tradotta in 10, che occupa due caratteri e non uno solo).
Dovresti comunque seguire il consiglio di Marco e usare la codifica ascii:
Codice sorgente - presumibilmente Python
puts "inserisci il testo"
codice = gets.chomp!
codice.each_char{ |c|
if(c >= "a"and c <= "z")
print c.ord
else
print c
end
}
Ok grazie mille per i vostri consigli ragazzi ho usato le modifiche che mi avete consigliato - anomalo - 28/10/11 18:15