Ruby/Duotą centų kiekį išreikšti mažiausiu monetų skaičiumi: Skirtumas tarp puslapio versijų

Iš Wikibooks.
Ištrintas turinys Pridėtas turinys
Expert (aptarimas | indėlis)
Expert (aptarimas | indėlis)
94 eilutė: 94 eilutė:
ct1, ct2 = suma % 2, suma / 2
ct1, ct2 = suma % 2, suma / 2
puts "#{pradine_suma} ct = "
puts "#{pradine_suma} ct = "
if ct50 > 0 # dažniausiai įprastas variantas if variantas
if ct50 > 0 # dažniausiai įprastas if variantas
puts "#{ct50} po 50 ct" # naudojamas tada, kai reikia įvykdyti ne vieną sakinį
puts "#{ct50} po 50 ct" # naudojamas tada, kai reikia įvykdyti ne vieną sakinį
end # taip, kaip paskalyje if ... then begin ... end
end # taip, kaip paskalyje if ... then begin ... end

22:28, 9 gruodžio 2005 versija

Programa, duotą centų kiekį, išreiškianti mažiausiu monetų skaičiumi.

Paprastas variantas

Paskalio variantas

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

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

Rezultatuose nerodo tų nominalų monetų, kurių kiekis yra nulis.

Paskalio variantas

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

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
puts "#{ct20} po 20 ct" if ct20
puts "#{ct10} po 10 ct" if ct10
puts "#{ct5} po 5 ct"   if ct5
puts "#{ct2} po 2 ct"   if ct2
puts "#{ct1} po 1 ct"   if ct1

Į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 # vykdys tada, kai ct20 nelygus nuliui  
  puts "#{ct20} po 20 ct"
end
if ct10 then # norintys gali naudoti ir then
 puts "#{ct10} po 10 ct"
end
if ct5 then puts "#{ct5} po 5 ct"; end # galime rašyti vienoje eilutėje, tačiau tada reikia ;
puts "#{ct2} po 2 ct"   if ct2 # sąlygą galima rašyti gale
puts "#{ct1} po 1 ct"   if ct1