Ruby/Duotą centų kiekį išreikšti mažiausiu monetų skaičiumi
Išvaizda
< Ruby
Programa, duotą centų kiekį, išreiškianti mažiausiu monetų skaičiumi.
Paprastas variantas
[keisti]Paskalio variantas
[keisti]program centai;
var suma, { pinigų suma }
ct50, ct20, ct10, ct5, ct2, ct1: integer; { monetos }
begin
readln(suma);
ct50 := suma div 50; suma := suma mod 50;
ct20 := suma div 20; suma := suma mod 20;
ct10 := suma div 10; suma := suma mod 10;
ct5 := suma div 5; suma := suma mod 5;
ct2 := suma div 2;
ct1 := suma mod 2;
writeln(' Monetu po');
writeln('50 ct: ', ct50);
writeln('20 ct: ', ct20);
writeln('10 ct: ', ct10);
writeln(' 5 ct: ', ct5);
writeln(' 2 ct: ', ct2);
writeln(' 1 ct: ', ct1)
end.
Ruby variantas
[keisti]suma = gets.to_i
suma, ct50 = suma % 50, suma / 50 # Ruby kalboje galima daryti tokius priskyrimus
suma, ct20 = suma % 20, suma / 20 # dviejų kintamųjų sukeitimas Ruby kalboje
suma, ct10 = suma % 10, suma / 10 # užrašomas paprastai a, b = b, a
suma, ct5 = suma % 5, suma / 5
ct1, ct2 = suma % 2, suma / 2
puts ' Monetu po'
puts "50 ct: #{ct50}" # Eilutėse su kabutėmis(") viduje
puts "20 ct: #{ct20}" # galima įterpti kintamuosius
puts "10 ct: #{ct10}" # ar netgi reiškinius
puts " 5 ct: #{ct5}" # pvz: puts "a + b = #{a + b}"
puts " 2 ct: #{ct2}"
puts " 1 ct: #{ct1}"
Protingesnis variantas
[keisti]Rezultatuose nerodo tų nominalų monetų, kurių kiekis yra nulis.
Paskalio variantas
[keisti]program centai;
var pradine_suma, suma, { pinigų suma }
ct50, ct20, ct10, ct5, ct2, ct1: integer; { monetos }
begin
readln(pradine_suma);
suma := pradine_suma;
ct50 := suma div 50; suma := suma mod 50;
ct20 := suma div 20; suma := suma mod 20;
ct10 := suma div 10; suma := suma mod 10;
ct5 := suma div 5; suma := suma mod 5;
ct2 := suma div 2;
ct1 := suma mod 2;
writeln(pradine_suma, ' ct = ');
if ct50 > 0 then writeln(ct50, ' po 50 ct');
if ct20 > 0 then writeln(ct20, ' po 20 ct');
if ct10 > 0 then writeln(ct10, ' po 10 ct');
if ct5 > 0 then writeln(ct5, ' po 5 ct');
if ct2 > 0 then writeln(ct2, ' po 2 ct');
if ct1 > 0 then writeln(ct1, ' po 1 ct');
end.
Ruby variantas
[keisti]pradine_suma = gets.to_i
suma = pradine_suma
suma, ct50 = suma % 50, suma / 50
suma, ct20 = suma % 20, suma / 20
suma, ct10 = suma % 10, suma / 10
suma, ct5 = suma % 5, suma / 5
ct1, ct2 = suma % 2, suma / 2
puts "#{pradine_suma} ct = "
puts "#{ct50} po 50 ct" if ct50 > 0
puts "#{ct20} po 20 ct" if ct20 > 0
puts "#{ct10} po 10 ct" if ct10 > 0
puts "#{ct5} po 5 ct" if ct5 > 0
puts "#{ct2} po 2 ct" if ct2 > 0
puts "#{ct1} po 1 ct" if ct1 > 0
Įmanomi ir kiti if panaudojimo variantai:
pradine_suma = gets.to_i
suma = pradine_suma
suma, ct50 = suma % 50, suma / 50
suma, ct20 = suma % 20, suma / 20
suma, ct10 = suma % 10, suma / 10
suma, ct5 = suma % 5, suma / 5
ct1, ct2 = suma % 2, suma / 2
puts "#{pradine_suma} ct = "
if ct50 > 0 # dažniausiai įprastas if variantas
puts "#{ct50} po 50 ct" # naudojamas tada, kai reikia įvykdyti ne vieną sakinį
end # taip, kaip paskalyje if ... then begin ... end
if ct20 > 0 then # norintys gali naudoti ir then
puts "#{ct20} po 20 ct"
end
# galime rašyti vienoje eilutėje, tačiau tada reikia ;
if ct10 > 0 then puts "#{ct10} po 10 ct"; end
puts "#{ct5} po 5 ct" if ct5 > 0
puts "#{ct2} po 2 ct" if ct2 > 0
puts "#{ct1} po 1 ct" if ct1 > 0
Variantas, naudojant for ciklą:
suma = gets.to_i
puts "#{suma} ct = "
for nominalas in [50, 20, 10, 5, 2, 1] do
suma, kiekis = suma % nominalas, suma / nominalas
puts "#{kiekis} po #{nominalas} ct" if kiekis > 0
end