Aiuto problema variabile==elemento array.to_s


#1

Ho iniziato da poco a programmare in ruby…
Ho creato un programma che deve vedere se una lettera scelta da me è
contenuta in una parola.
Il programma funziona bene, ma non riesco a far funzionare un passaggio
particolare:
Se confronto una lettera contenuta in un array con una inserita da me,
anche se sono identiche restituisce sempre false al posto di true…

(passaggio del programma semplificato:
A=[“c”, “a”, “s”, “a”]
b=gets.to_s
if A[0].to_s==b
puts “si”
else
puts “no”
end

In questo caso se eseguo il programma e a b assegno il valore c otterrò
comunque no.
Ho provato anche ad utilizzare to_s in vari passaggi per fare il
confronto ma non funziona…
Potreste aiutarmi??
Grazie in anticipo e scusate per il disturbo…
Vi lascio anche il programma completo, anche se è ancora solo una
prova…


#2

Ciao,
a quanto pare gets aggiunge un \n alla stringa che inserisci.
sostituisci
b=gets.to_s con
b=gets.strip

Il giorno 18 maggio 2009 19.56, Matteo P. removed_email_address@domain.invalid ha
scritto:


#3

On Mon, 2009-05-18 at 21:24 +0200, Matteo P. wrote:

Grazie mille per la risposta…
Ho provato ad utilizzare .strip ma non sembra funzionare… Non riesco a
capire perchè…

Prova ad utilizzare:
b=gets.chomp

http://www.ruby-doc.org/core/classes/String.html#M000834


#4

Grazie mille per la risposta…
Ho provato ad utilizzare .strip ma non sembra funzionare… Non riesco a
capire perchè…


#5

Prova ad utilizzare:
b=gets.chomp

Avevo già provato ma non mi funziona neanche .chomp…


#6

così a me funziona

A = [“c”, “a”, “s”, “a”]
p “Immetti un carattere”
b = gets.to_s.chomp.downcase
p A[0] == b ? “Si” : “No”

ho aggiunto un downcase finale per asicurarmi di accettare anche una c
maiuscola


#7

Giampiero Z. wrote:

così a me funziona

A = [“c”, “a”, “s”, “a”]
p “Immetti un carattere”
b = gets.to_s.chomp.downcase
p A[0] == b ? “Si” : “No”

ho aggiunto un downcase finale per asicurarmi di accettare anche una c
maiuscola

Grazie mille!!
Così funziona perfettamente anche copiando le righe nel programma
completo che ho creato…


#8

Matteo P. wrote:

b = gets.to_s.chomp.downcase

per inciso, il to_s è del tutto inutile;
la gets rende sempre una stringa;
casomai può essere necessario trasformare la stringa in qualcosaltro, ad
esempio, se attendi in input un numero …

n = gets.chomp.to_i

precisazione dovuta
ciao