Jak dodać dwie liczby

Witam.
Mam banalny problem i nie wiem jak go rozwiązać…
Zaczynam zabawę z ruby i napisałem prosty kalkulator:

[code]#!/usr/bin/env ruby

puts “Wprowadz liczbe a”
a = gets
a.chop!
puts “Wprowadz liczbe b”
b = gets
b.chop!
c = a + b
puts c[/code]
Tylko jeśli a=1 i b=2, to wyświetla 12 zamiast 3.
Co jest nie tak?

A sprawdzałes czy to są faktycznie liczby? A moze to sa obiekty klasy String? :wink:

a.to_i + b.to_i

[quote=Risus]Witam.
Mam banalny problem i nie wiem jak go rozwiązać…
Zaczynam zabawę z ruby i napisałem prosty kalkulator:

[code]#!/usr/bin/env ruby

puts “Wprowadz liczbe a”
a = gets
a.chop!
puts “Wprowadz liczbe b”
b = gets
b.chop!
c = a + b
puts c[/code]
Tylko jeśli a=1 i b=2, to wyświetla 12 zamiast 3.
Co jest nie tak?[/quote]
gets zwraca stringa, a Ty potrzebujesz liczby.

Powyższy kod działa tak jakbyś zrobił c = “1” + “2”

Zmień pobieranie na:

a = gets.to_i b = gets.to_i

irb(main):001:0> a = gets.chop!.to_i
1
=> 1
irb(main):002:0> b = gets.chop!.to_i
2
=> 2
irb(main):003:0> a + b
=> 3
irb(main):004:0> a.class
=> Fixnum
irb(main):005:0> a = gets.chop!
1
=> "1"
irb(main):006:0> b = gets.chop!
2
=> "2"
irb(main):007:0> a + b
=> "12"
irb(main):008:0> a.class
=> String

To chyba wszystko wyjaśnia. Po prostu to, co “wchodzi z klawiatury”, jest traktowane jako String, a nie np. Fixnum.

Edit:

Otworzyłem kartę, wróciłem do niej za kilkanaście minut i jak widać nieco się spóźniłem, ale niech ten post już zostanie :wink:

Dziękuję wszystkim za pomoc. :wink: Problem rozwiązany.