Witam.
Mam problem z instrukcją case. Gdy wpisuję z klawiatury parametr a (np. 2), czy jakąkolwiek inną cyfrę to zawsze wyświetla mi “pudlo”. Czy wina leży po stronie typów wprowadzanych danych (string)? Jakieś sugestie?
puts “podaj parametr a”
STDOUT.flush
a = STDIN.gets; a.to_i; a.chomp!
def warunek(a)
case a
when 0…10
print “cyfra”
else
print “pudlo”
end
end
[quote=Zami17]a = STDIN.gets; a.to_i; a.chomp!
[/quote]
Masz problem z tym kawałkiem kodu, instrukcje po średnikach interpreter traktuje jakby były w nowej linii, więc Twój kod jest równoważny takiemu:
a = STDIN.gets
a.to_i
a.chomp!
metoda “to_i” nie zmienia wartości obiektu, na rzecz którego została wywołana, tzn. jeżeli wywołujesz “a.to_i”, to obiekt “a” nie zostanie zmieniony na liczbę, tylko taka instrukacja zwróci liczbę, dlatego musiałbyś napisać:
a = a.to_i
A w skrócie, to najlepiej zrobić to tak jak @teac napisał, chciałem tylko wytłumaczyć dlaczego Twój kod działa tak a nie inaczej.