Ruby/Duotą centų kiekį išreikšti mažiausiu monetų skaičiumi

Iš Wikibooks.
Peršokti į: navigacija, paiešką

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