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))
Aihe on jo aika vanha, joten et voi enää vastata siihen.