Kirjautuminen

Haku

Tehtävät

Kilpailu

Murra koodi!
Lue ja osallistu!
Voittajia 1 + yrittäjiä 1

Keskustelu: Koodit: Lua: Kuvioiden pinta-alat

koodaaja [23.04.2022 16:35:08]

#

Tässä on geometriaan liittyvä esimerkki koodattuna Lualla. Ohjelma kykenee laskemaan erikuvioiden kuten neliön, suorakulmaisen kolmion ja ympyrän pinta-aloja. Ohjelman ideana on laskea ensin ensimmäisen kuvion pinta-ala ja tästä mahdollisesti otetaan pois pienempi kuvio sekä lopuksi valintojen mukaan palautetaan takaisin vielä pienempi kuvio.

Ohjelmassa on kaksi funktiota ensimmäinen tarkistaa ja määrittelee sen lasketaanko, poistetaanko vai palautetaanko kuvio ja toinen funktio laskee yksittäisen kuvion pinta-alan.

function LaskePintaAla(kuvio,sivu,kulma,vahennys)
 pinta_ala = 0.0
 --Lasketaan yksittäisen suorakulmion (tässä tapauksessa neliön), suorakulmaisen kolmion tai ympyrän pinta-ala.
 --Neliössä ja kolmiossa muuttuva osa on sivun pituus ja ympyrässä kulma
 if (kuvio == 1) then
   --neliö

   pinta_ala = (sivu-vahennys)^2
 elseif (kuvio == 2) then
   --suorakulmainen kolmio
   pinta_ala = (sivu-vahennys)^2/2
 elseif (kuvio == 3) then
   --ympyrä
   pinta_ala = math.pi*sivu^2*((kulma-vahennys)/360)

 end
 return pinta_ala
end

function LaskeKokonaisPintaAla(kuvio,poistot,sivu,kulma)
  --Valinnasta huolimatta lasketaan ensimmäisen kuvion pinta-ala, siitä valintojen mukaan poistetaan pienempi kuvio ja sen jälkeen mahdollisesti palautetaan vielä pienempi kuvio.
  tulos = 0.0
  vahennys = 0.0

  tulos = LaskePintaAla(kuvio,sivu,kulma,vahennys)

  if (poistot == 2) then
    --Poistetaan pienempi kuvio
    vahennys = 5.0
    if (sivu >= vahennys) then
      tulos = tulos-LaskePintaAla(kuvio,sivu,kulma,vahennys)
    end


  elseif (poistot == 3) then
    --Poistetaan pienempi kuvio ja palautetaan vielä pienempi kuvio.
    vahennys = 5.0
    if (sivu >= vahennys) then
      tulos = tulos-LaskePintaAla(kuvio,sivu,kulma,vahennys)

    end
    if (sivu >= vahennys) then
      vahennys = 10.0
      tulos = tulos+LaskePintaAla(kuvio,sivu,kulma,vahennys)
    end


  end

  return tulos
end

--Annetaan lähtötiedot ja sen jälkeen lasketaan tulos kahden funktion avulla.
print("Valitse kuvio 1) neliö, 2) kolmio, 3) ympyrä")
kuvio = io.read("*number")

if (kuvio == 1 or kuvio == 2 or kuvio == 3) then
 print("Anna sivun/säteen pituus")
 sivu = io.read("*number")
end
if (kuvio == 3) then
  print("Anna kulma")
  kulma = io.read("*number")
end

print("1) Koko pinta-ala, 2) poistettu osa, 3) poistettu ja palautettu osa")
poistot = io.read("*number")
print("Pinta-ala:",LaskeKokonaisPintaAla(kuvio,poistot,sivu,kulma))

Vastaus

Muista lukea kirjoitusohjeet.
Tietoa sivustosta