Pravokotnik

Pravokotnik

Avtor: Jasmina Satler

Navodila naloge

Napišite razred Pravokotnik, s katerim predstavite pravokotnik v ravnini, katerega stranice so vzporedne koordinatnim osem, dolžine stranic pa cela števila. Kvadrat je predstavljen s koordinatama stredišča in dolžinama stranic.

  • Sestavite metodi za izračun ploščine in obsega kvadrata.
  • Izračunajte, koliko pravokotnikov ima ploščino manjšo od povprečne ploščine pravokotnikov v tabeli.
  • Vse pravokotnike v tabeli, ki jih lahko, spremenite v ploščinsko enake kvadrate. Npr. pravokotnik s stranicama 4 in 9 lahko spremenite v pravokotnik (kvadrat) s stranico 6, pravokotnika s stranicama 12 in 4 pa ni možno spremeniti v ploščinsko enak kvadrat, ki ima celoštevilsko dolžino stranic.
  • Iz žice izdelujemo modele pravokotnikov. Koliko cm žice potrebujemo, če želimo narediti vse pravokotnike v tabeli.
  • Napiši medodo, ki iz dane tabele pravokotnikov izloči vse, ki niso lepi. Pravokotnik je lep, če je razmerje med višino in dolžino (približno) enako zlatemu rezu .


Razred naj obvezno vsebujejo

  • Minimalni (tj. prazni) kontruktor public Razred(), ki tvori objekt s privzetimi (smiselnimi!)vrednostmi.
  • Metodo public override string ToString(), ki vse podatke v objektu zapiše v obliki niza.
  • Polni konstruktor public Razred(string s) , ki s klicem Razred(niz) generira tak objekt Razred r , za katerega velja niz = r.ToString() .
  • Metodo DodajNaDatoteko(string imeDatoteke), ki objekt this zapiše (oz. doda ; glej metodo File.AppendText())kot vrstico this.ToString()v tekstovni datoteki.
  • MetodoPreberiZDatoteke(string imeDatoteke),ki vrne tabelo objektov, kjer posamezni objekt vsebuje podatke, ki so zapisani v posamezni vrstici tekstovne datoteke.
  • Metodo IzpisiDatoteko(string imeDatoteke), ki izpiše vsebino datoteke.
  • Metodo TvoriDatoteke(string imeDatoteke, int stElementov), ki tvori naključno datoteko.

Razlaga algoritma

Najprej napišemo razred Pravokotnik, ki je predstavljen z dolžinama stranic ter koordinatama središča pravokotnika.

(p1.png)


(p2.png)


(p3.png)

Razlaga algoritma

Tvorimo ustrezne (smislene) konstruktorje, za ustvarjanje objektov.

(p4.png) (p5.png)

Razlaga algoritma

Nato napišemo metodo ToString, ki poskrbi za ustrezen izpis objekta.

(p6.png)

Ter metodo DodajNaDatoteko, ki doda na datoteko objekt razreda pravokotnik.

(p7.png)

Razlaga algoritma

Z metodo BeriZDatoteke smo imeli malo več dela. Najprej preverimo, da datoteka sploh obstaja, nato pa preberemo vse vrstice z datoteke in jih dodajamo v niz. Za vsako dodano vrstico, v niz dodamo še znak "|". Ta znak bomo kasneje uporabili za separator.

(p8.png)

Razlaga algoritma

Nato pregledujemo niz tako, da dokler ne naletimo na separator dodajamo znake v nov niz (trenutniPravokotnik). Ko naletimo na separator, iz niza trenutniPravokotnik ustrezno preberemo podatke, ter ustvarimo nov objekt razreda pravokotnik.

(p9.png) (p10.png)

Razlaga algoritma

Ustvarimo še metodo, s katero tvorimo datoteko, na katero uporabnik doda željeno število objektov iz razreda pravokotnik.

(p11.png)

Razlaga algoritma

V razredu ustvarimo še dodatni metodi, ki nam izračunata ploščino in obseg pravokotnika. Ti dve metodi nam bosta prišli prav pri reševanju kasnejših problemov.

(p12.png)

Povprečna ploščina

Nato se lotimo metode, ki vrne število pravokotnikov, ki imajo ploščino manjšo od ploščine pravokotnikov v seznamu. Najprej izračunamo ploščino vseh pravokornikov v seznamu. To naredimo tako, da gremo čez vse objekte v seznamu, poračunamo njihovo ploščino, ter jo dodajamo skupni ploščini. Skupno ploščino delimo s številom objektov v seznamu in tako dobimo povprečno ploščino. Nato gremo zopet čez vse objekte v seznamu in preverjamo če imajo ploščino manjšo od povprečne. Če imajo, potem števec povečamo za 1.

(p13.png)

Pravokotniki iz žice

Ta metoda izračuna koliko cm žice bi potrebovali, če bi naredili vse pravokotnike iz seznama. Pri tej nalogi izračunamo obsege vseh pravokotnikov v seznamu in jih seštevamo med seboj.

(p16.png)

Spremeni v kvadrate

Ta metoda pravokotnike spremeni v kvadrate enakih ploščin, če je to mogoče. V programu pregledamo vsak pravokornik posebej in če je koren ploščine pravokotnika celo število, potem se pravokotnik da spremeniti v kvadrat. Če naletimo na tak pravokotnik, potem seštejemo dolžini stranic in jih delimo z 2. Pravokotniku spremenimo dolžini stranic.

(n2.png)

Lepi pravokotniki

Metoda iz danega seznama pravokotnikov izloči vse, ki niso lepi. Tu za vsak pravokotnik izračunamo zlati rez. Če je razmerje med višino in dolžino enako zlatemu rezu, potem je pravokotnik lep.

(n3.png)

Testni program

(p17.png)
koda programa


(pr1.png)
izpis na konzoli

Testni program

(p18.png)


(pr2.png)
izpis na konzoli

Testni program

(p19.png)
koda programa


(pr3.png)
izpis na konzoli

Prikaz delovanja

Prikaz delovanja testnega programa.

0%
0%