Hej!
Mam problem z zadaniami z tej strony:
a dokładnie z
Change Return Program - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change.
mój kod wygląda tak:
puts "Please enter cost"
cost = gets.chomp.to_f
puts "Please enter money"
money = gets.chomp.to_f
rest = money - cost
while rest < 0
puts "You still owe %.2f" % rest
tw,te,f,o,q,d,n,p = 0,0,0,0,0,0,0,0
dollars = (money- cost)
change = (money - cost - dollar)*100
if dollars >= 20
tw = dollars/20
dollars = dollars % 20
if dollars >= 10
te = dollars/10
dollars = dollars % 10
if dollars >= 5
f = dollars/5
dollars = dollars % 5
if dollars >= 1
o = dollars
if change >= 25
q = change/25
change = change % 25
if change >= 10
d = change/10
change = change % 10
if change >= 5
n = change/5
change = change % 5
if change >= 1
p = change
final = (money - (cost,tw,te,f,o,q,d,n,p))
print ("your change is $%.2f: \n
%.0f twenties \n
%.0f tens \n
%.0f fives \n
%.0f ones \n
%.0f quarters \n
%.0f dimes \n
%.0f nickels \n
%.0f pennies" % final)
Podpatrzyłem rozwiązanie tego problemu w innym języku. Jednak chciałem go napisać sam i do końca zrozumieć. W tym momencie podczas uruchamiania programu pojawiaja mi się dwa komunikaty:
Fibi.rb:42: syntax error, unexpected ‘)’, expecting ‘=’
final = (money - (cost, tw,te,f,o,q,d,n,p))
^
Fibi.rb:54: syntax error, unexpected end-of-input, expecting ‘)’
Jednak nie rozumiem do końca, dlaczego mam stawić znak równosi w linijce 42 oraz nawias zamknąć w linijce 54. Nie wiem też, czy ten ostatni zapis wyniku jest poprawny, czy mógł”y go ktoś sprawdzić?
Oprócz tgo czy mógłby mi ktoś wytłumaczyć, jak dokładnie działa kod który napisałem ? chodzi mi dokładnie o:
if dollars >= 5
f = dollars/5
dollars = dollars % 5
Ja to rozumiem tak: Jeżeli dollars (czyli różnica pomiędzy ceną a ilośćia gotówki) jest większa bądz równa liczbię pięć to zmienna f będzie wynosić wielokrotność tej liczby, a następnie zmienna dollars będzie wynosić dokładnie resztę z dzielenia przez 5 i zostaje przekazana do dalszych obliczeń, tak?
Oraz
tw,te,f,o,q,d,n,p = 0,0,0,0,0,0,0,0
Powoduje, że wszystkie zmienne są zdeklarowane na początku jako zero 9póżniej są one nadpisywane, jednak z takim zapisam się spotkałem przy jednym rozwiązaniu i sie zastanawiam czy jest on poprawny.
Z góry dziękuje za Waszą pomoc:)
Pozdrawiam!