Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina

[ Pregleda: 6914 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

xploiter

Član broj: 119649
Poruke: 116
89.146.181.*



+1 Profil

icon [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina04.10.2007. u 20:27 - pre 201 meseci
Pokusavam da napravim nesto kao iz knjige iz koje ucim c++ ali mi nikako ne uspjeva...
Sve se kompajla i kad pokrenem funkciju fnacrtaj_pravokutnik desi se neocekivana stvar. Ta funkcija bi trebala da nacrta pravokutnik ispunjen karakterom "x", ali umjesto toga samo se x-evi bezveze pocnu stancat bez stajanja po ekranu. Da napomenem c++ ucim vec oko 3 mjeseca sa vecim prekidima zbog skole... tako da znam da ne znam

Evo kod pa ako neko moze da mi pomogne, sa ovim se mucim vec 2 dana... (sinoc nisam mogao spavati) Hvala

Code:

#include <iostream>

enum izbor {nacrtaj_pravokutnik = 1, ispisi_obim, ispisi_povrsinu, postavi_nove_vrijednosti, izlaz};

class Pravokutnik
{
              public:
              Pravokutnik (int ,int);
             ~Pravokutnik();
             
             int Get_sirinu();
             int Get_duzinu();
             int Get_obim();
             int Get_povrsinu();
             void Set_novo(int nduzina, int nsirina);
             
             private:
                int its_duzina;
                int its_sirina;
                };
                
      Pravokutnik::Pravokutnik(int duzina, int sirina)
      {
             its_duzina = duzina;
             its_sirina = sirina;
             }
             
      Pravokutnik::~Pravokutnik()
      {}
      
      int Pravokutnik::Get_sirinu()
      {
             return its_sirina;
             }
      int Pravokutnik::Get_duzinu()
      {
             return its_duzina;
             }
      int Pravokutnik::Get_obim()
      {
             return (2* its_duzina + 2* its_sirina);
             }
      int Pravokutnik::Get_povrsinu()
      {
             return (its_duzina * its_sirina);
             }
      void Pravokutnik::Set_novo(int nduzina, int nsirina)
      {
             its_duzina = nduzina;
             its_sirina = nsirina;
             }
      
      void fnacrtaj_pravokutnik( int duzina, int sirina);
      void fispisi_obim(int obim);
      void fispisi_povrsinu(int povrsina);
      int Meni();
  
   
      int main()
      
      {
          using namespace std;
          
          Pravokutnik prvkt (20, 6);
          
          bool exit = false;
          int izbor;
          
          for (;;)
          {
          izbor = Meni();
          if ( izbor < 1  || izbor > 5)
          {
               cout << "Nevazeci izbor, molim unesite ponovo: \n";
               continue;
               }
          switch (izbor)
          {
                 case (nacrtaj_pravokutnik):
                      fnacrtaj_pravokutnik(prvkt.Get_duzinu(), prvkt.Get_sirinu());
                      break;
                 case (ispisi_obim):
                      fispisi_obim(prvkt.Get_obim());
                      break;
                 case (ispisi_povrsinu):
                      fispisi_povrsinu(prvkt.Get_povrsinu());
                      break;
                 case (postavi_nove_vrijednosti):
                      int nduzina, nsirina;
                      cout << "Nova sirina: ";
                      cin >> nsirina;
                      cout << "\nNova duzina: ";
                      cin >> nduzina;
                      cout << "\n";
                      prvkt.Set_novo(nduzina, nsirina);
                      break;
                 case (izlaz):
                      exit = true;
                      break;
                      }
                 if (exit != false)
                    break;
                    }
                 return 0;
                 }
          
          
          int Meni()
          
          {
              using namespace std;
              
              int izbor;
              cout << "       ***Meni***\n\n";
              cout << "(1) Nacrtaj Pravokutnik\n";
              cout << "(2) Ispisi obim\n";
              cout << "(3) Ispisi povrsinu\n";
              cout << "(4) Postavi nove vrijednosti\n";
              cout << "(5) Izlaz\n\n";
              cout << "Molim izaberite: \n";
              
              cin >> izbor;
              
              return izbor;
              }
              
          void fnacrtaj_pravokutnik(int duzina, int sirina)
          {
               using namespace std;
               
               for ( int i = 0 ; duzina > i; i++)
               {
                   for(int j = 0; sirina > i; j++)
                   cout << "x";
               cout << "\n";
               }
          }
          
          void fispisi_obim(int obim)
          {
               using namespace std;
               
               cout << "Obim je: " << obim << "\n\n";
               }
               
          void fispisi_povrsinu(int povrsina)
          {
               using namespace std;
               
               cout << "Povrsina je: " << povrsina << "\n\n";
               }




[Ovu poruku je menjao xploiter dana 04.10.2007. u 22:49 GMT+1]
 
Odgovor na temu

GxRxN

Član broj: 118184
Poruke: 25
*.eunet.yu.



Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina04.10.2007. u 20:52 - pre 201 meseci
Klasicna greska ;)

Code:

for(int j = 0; sirina > i; j++)

zameni sa
Code:

for(int j = 0; sirina > j; j++)
 
Odgovor na temu

lukeguy
Novi Sad

Član broj: 46545
Poruke: 470
*.net
Via: [es] mailing liste



+8 Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina04.10.2007. u 21:44 - pre 201 meseci
Problem je što u funkciji fnacrtaj_pravokutnik ne ubacuješ novi red. "cout" samo ispiše karaktere jedan za drugim, tako da ti se x ispiše onoliko puta koliko je i*j, ali REDOM, jedan za drugim. Po izlasku iz unutrašnje petlje moraš upisati jedan "n" (new line). Tako će ti pre svakog uvećanja brojača i ispis početi u novom redu.

Inače mislim da u ovom programu ima još stvari koje nisu baš u skladu sa dobrim stilom programiranja. Da se razumemo, to nisu krucijalne stvari za funkcionisanje bilo kojeg programa, ali postoje neka nepisana pravila koja treba poštovati, jer time poboljšavaš čitkost kôda i smanjuješ rizik od grešaka (između ostalog).

Krenuću od početka kôda. Inicijalizacija atributa klase u konstruktoru se u C++-u može izvesti i na jedan drugi način. U samoj deklaraciji klase, čim deklarišeš konstruktor dodaš i inicijalizaciju. Za ovaj tvoj primer to bi izgledalo ovako:
Code:

    class Pravokutnik {
        private:
        int sirina, duzina;
        ...
        public:
        Pravokutnik(int mduzina, int msirina) : sirina(msirina), duzina(mduzina) { }
        ...
    }

Ovaj način je i preporučen, jer je brži za pisanje.

Onda, tzv. geteri i seteri (get i set metode) bi trebalo da se zovu get_<imeatributa> i set_<imeatributa>. Tebi se jedan geter zove npr. Get_duzinu, dakle kombinuješ englesku reč get sa lokalnom dužina, i to još u padežu. :) Ako klasa Pravougaonik ima atribute duzina i sirina, geteri treba da su imenovani get_duzina i get_sirina, a slično tome i seteri. Neko čak insistira da se sve piše na engleskom, jer je kao preglednije, ali mislim da to ipak spada u lični stil, a ne u pravilo.

Dalje, odaberi stil kako ćeš imenovati atribute i metode. U C++-u to nije tako striktno definisano kao u Javi, ali nije loše da ili svaku reč počinješ velikim slovom ili da reči razdvajaš donjom crtom, ali nemoj mešati i jedno i drugo.

Ili recimo metoda Set_novo. Možda bi bilo bolje da se metoda zove set_dimenzije, pošto kad neko sa strane (kome recimo prodaš svoju biblioteku klasa) vidi set_novo sigurno neće imati pojma šta je "novo". Kad smo kod ove metode, zapali su mi za oko i atributi. Nema potrebe da nešto posebno prefiksuješ imena atributa. Pravougaonik ima svoju dužinu i širinu i neka se atributi tako i zovu (naravno bez ž i š). :) A kada treba da im pristupiš iz neke metode koristi this. Tako u metodi Set_novo slobodno parametre imenuj isto kao i atribute, a razlikovaćeš ih tako što ćeš sa leve strane znaka dodele (=) koristiti this. Ovo this je neophodno samo tamo gde metoda ima parametre istog imena kao i klasa, pa recimo u metodi Get_obim to this ne moraš koristiti, jer nema zabune o kojoj "širini" se radi. S druge strane neki ljudi preferiraju da to this koriste što ređe, pa onda prefiksuju imena parametara u metodi nekim slovom. Ja rađe koristim prvi način, jer je za kôd u kojem piše this.sirina = sirina očiglednije šta radi.

Nisam siguran koji je bio motiv da metodu za crtanje izmestiš iz klase pravougaonik. Ovo nekad može imati opravdanje (recimo kada je klasa Pravougaonik visokospecijalizovana, a s druge strane imaš neku drugu klasu koja se bavi crtanjem). U ovom tvom programu, a s obzirom na to šta taj program radi, meni deluje mnogo logičnije da tu funkciju zapravo napraviš kao metodu klase Pravougaonik. Takođe mi nije jesan motiv uvođenja funkcija fispisi_obim i fispisi_povrsinu s obzirom da te funkcije imaju jednu jedinu liniju koda i da pozivanje takvih funkcija predstavlja nepotrebno trošenje resursa. Ovakve stvari se nikad ne rade bez jako stvarno velike potrebe.

Zašto prvkt ne instanciraš kao objekat preko operatora new?

Zbog čega su ti funkcije Meni(), fnacrtaj_pravokutnik, fispisi_obim i fispisi_povrsinu unutrašnje funkcije main-a? Ovo treba da su zasebne funkcije van main funkcije.

I tako dalje, mislim da ti je dosta za početak. :)
 
Odgovor na temu

xploiter

Član broj: 119649
Poruke: 116
89.146.181.*



+1 Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina04.10.2007. u 22:24 - pre 201 meseci
@GxRxN

Hvala covjece radi sad!!!

@lukeguy

Ne znas koliko mi je drago sto mi je netko ko vise zna dao nove upute hvala !!!!

Posto jos ucim c++ to zadnje sto si rekao nisam nikako razumio (moguce da nisam dosao do toga???)

mozes li mi molim te pojasniti ovo:

Citat:
Zašto prvkt ne instanciraš kao objekat preko operatora new?

Zbog čega su ti funkcije Meni(), fnacrtaj_pravokutnik, fispisi_obim i fispisi_povrsinu unutrašnje funkcije main-a? Ovo treba da su zasebne funkcije van main funkcije.


Instanciranje???? operator new????

Kako mislis unutarnje funkcije main-a??? Samo su pozvane iz main-a.

I jos jedno pitanje:

Koja je razlika izmedju "\n" i endl???? ovo me muci vec dosta vremena.

Imam ja jos dosta nejasnih stvari, ali sta cu mislim da je to normalan put ucenja. Neke nejasnoce nestaju nastavljanjem ucenja i vjezbe, a neke bi tek trebale nestati heheh
 
Odgovor na temu

lukeguy
Novi Sad

Član broj: 46545
Poruke: 470
*.net
Via: [es] mailing liste



+8 Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina04.10.2007. u 22:24 - pre 201 meseci
Uf, 'ladno sam to prevideo. Tako mi i treba kad se pravim pametan. :) No, ostali komentari i dalje stoje.
 
Odgovor na temu

Crazy shadow
Milos Milic
.Net Software Engineer
Beograd

Član broj: 74894
Poruke: 200
91.150.118.*



+2 Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina07.10.2007. u 13:29 - pre 201 meseci
Odlican primer za ucenje...Koju knjigu citas??

Crazy shadow
 
Odgovor na temu

xploiter

Član broj: 119649
Poruke: 116
*.PPPoE-1659.sa.bih.net.ba.



+1 Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina07.10.2007. u 17:11 - pre 201 meseci
Nučite C++ za 21 dan od Jesse Liberty, meni je knjiga odlicna

EDIT: Moze li mi itko na ona gore navedana pitanja odgovorit? pls

 
Odgovor na temu

DjoleReject
Djordje Knezevic
Zvezdara

Član broj: 85258
Poruke: 309
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina07.10.2007. u 20:10 - pre 201 meseci
@ lukeguy
Mozda nije OK tako olako davati savete, bez malo boljeg poznavanja materije. Na primer, znas li ti uopste sta je instanciranje pomocu new??? Cemu takav savet sa visine kao da si ne znam kakav savet dao. U konkretnom slucaju, ne postoji ni jedan razlog da se pravi pointer na klasu. Ionako se sve napravi i ubije u main-u, pa zaista ne vidim cemu pointer (koji kasnije treba i obrisati), kada je sve u redu i bez komplikovanja.
Takodje, ne vidim koja je prednost tvog konstruktora u odnosu na njegov. Cak je njegov daleko pregledniji. Ne znam gde se to predlaze komplikovanje sopstvenog programa, ali ja ne vidim potrebu za takvim stvarima. Ko ima neki argument protiv pristupa da dodelis vrednosti u telu funkcije, neka ih napise (ali nemoj da to bude "brze se pise", zato sto nije ni tacno, ni relevantno).

Inace, tacno je da je imenovanje promenljivih i imena funkcija vazno. Mnogi pristupi koji su postojali su uspeli da se zadrze, pa sada imamo bar deset konvencija (i pedeset kombinacija) koje se mogu sresti u praksi. Moja konvecija se sastoji od malih pocetnih slova i velikog slova svake sledece reci (getParametar, setPoint...), a kod imenovanja promenljivih da opisuju (na engleskom) ono sto predstavljaju, bez pominjanja tipa (size, position, checked...). U slucaju klasa i struktura ide veliko slovo i nigde donja crta _ .
Ovo je ukratko moja konvencija, bitno je naglasiti da je to ne cini savrsenom i da svako mora naci ono sto njemu odgovara. Vazni uslovi kada smisljate kako cete pisati:
- Razumljivost. Ne razumljivost tebi koji si pisao, nego nekom drugom.
- Duzina. Mozda je ovo podlozno diskusiji, ali ne vidim razlog za "bVratiTrueAkoJeTacnoAFalseAkoNije()" funkcijama. Ipak to nije predvidjeno da ga cita tvoja baba...
- Konzistentnost. Bolje imati losu konvenciju koje se drzis, nego dobru koje se ne drzis.
Na kraju da naglasim da rasprava o tome kako je bolje pisati najcesce zavrsi u flejmu, pa mozda ne bi trebalo insistirati na njoj.

@xploiter
Ima dosta stvari na koje mozes obratiti paznju, ali po mom misljenju, najvaznije je da rasporedis taj kod po sledecim fajlovima:

pravokutnik.h
pravokutnik.cpp
main.cpp
Mnoge stvari ce ti i samom biti jasnije kada vidis lepo razdvojene stvari...
Od ostalih stvari koje se vide na prvi pogled:

- nepotrebno je napisati destruktor koji ne radi nista. Nemas ni jedan niz niti pointer u klasi, pa ne moras nista ni brisati (kako si pravilno zakljucio), to direktno znaci da nema potrebe za redom
Pravokutnik::~Pravokutnik() {}

-for(;;) radi posao, ali je daleko elegantnije while(true), ukoliko je jedini nacin izlaska iz petlje da se okine break na nekom mestu.

- Jako je lepa praksa da argumente koji se sigurno nece menjati obelezis sa const. Isto vazi i za funkcije koje ne menjaju nista u klasi. Npr:
void ispisiPravokutnik()const;
...
De si Deda...
 
Odgovor na temu

lukeguy
Novi Sad

Član broj: 46545
Poruke: 470
*.net
Via: [es] mailing liste



+8 Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina07.10.2007. u 22:21 - pre 201 meseci
DjoleReject, meni se čini da nešto mnogo lično primaš ove moje kritike. Nisam siguran na osnovu čega se dâ zaključiti da "olako" dajem savete "bez boljeg poznavanja materije". Na kraju i ti si čoveku dao savete "kako treba" i šta je u skladu sa "dobrom praksom" (sa kojima se i ne bih složio), a mene zbog toga kritikuješ. U odbranu svojih stavova mogu dodati da ako još jednom pročitaš moj post videćeš da sam sve tamo izneo kao svoje mišljenje i preporuke iz svog dosadašnjeg iskustva, a kome se to ne dopada neka radi kako misli da je bolje. Uostalom, možda bi bilo dobro da se javi još neko i podeli svoje iskustvo u pisanju C programa, da autor teme dobije još koje mišljenje.

Konkretno, što se tiče pokazivača: ako dečko ne planira da radi sa pokazivačima, onda treba da programira u Pascalu ili VisualBasic-u, a ne u C-u. Dobra praksa programiranja u C-u podrazumeva rad sa pokazivačima i to je osnovni koncept koji se mora naučiti. Po meni: bolje što pre.
 
Odgovor na temu

xploiter

Član broj: 119649
Poruke: 116
89.146.166.*



+1 Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina08.10.2007. u 07:34 - pre 201 meseci
Sto se pokazivaca tice, problem je sto sam ovaj program pisao dok nisam znao nista o pokazivacima koje sam jucer poceo uciti.

A imenovanje sad kad pogledam smijem se sam sebi hehe. Pokusat cu da ispravim to i da stvorim svoj stil.

I opet hvala ma savjetima !!!
 
Odgovor na temu

DjoleReject
Djordje Knezevic
Zvezdara

Član broj: 85258
Poruke: 309
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina08.10.2007. u 13:43 - pre 201 meseci
Citat:
lukeguy: DjoleReject, meni se čini da nešto mnogo lično primaš ove moje kritike. Nisam siguran na osnovu čega se dâ zaključiti da "olako" dajem savete "bez boljeg poznavanja materije". Na kraju i ti si čoveku dao savete "kako treba" i šta je u skladu sa "dobrom praksom" (sa kojima se i ne bih složio), a mene zbog toga kritikuješ. U odbranu svojih stavova mogu dodati da ako još jednom pročitaš moj post videćeš da sam sve tamo izneo kao svoje mišljenje i preporuke iz svog dosadašnjeg iskustva, a kome se to ne dopada neka radi kako misli da je bolje. Uostalom, možda bi bilo dobro da se javi još neko i podeli svoje iskustvo u pisanju C programa, da autor teme dobije još koje mišljenje.

Konkretno, što se tiče pokazivača: ako dečko ne planira da radi sa pokazivačima, onda treba da programira u Pascalu ili VisualBasic-u, a ne u C-u. Dobra praksa programiranja u C-u podrazumeva rad sa pokazivačima i to je osnovni koncept koji se mora naučiti. Po meni: bolje što pre.


Uopste nema nicega licnog u onome sto sam rekao.
Ovo je C++ podforum i podrazumeva se da tu pisemo o ovom programskom jeziku. Tvoj argument je sledeci: "Ako ne zelis da vozis 300 na sat, nema razloga da kupujes BMW-a, dovoljan ti je i Yugo". Pointeri su neizostavni deo jezika, ali nigde ne pise da svaka promenljiva mora tako da se instancira. ZNANJE o pointerima je kompletno kada ZNAS gde i zasto ti trebaju.
Drugo, tvoj savet u vezi konstruktora je sumanut. Apsolutno nista se ne dobija, a gubi se itekako na razumljivosti. Objasni zasto mislis da je potreban new i onakav konstruktor, pa cemo nastaviti raspravu argumentima...
P. S. Sa cime se ne bi slozio u vezi "dobre prakse" koju sam naveo?
De si Deda...
 
Odgovor na temu

lukeguy
Novi Sad

Član broj: 46545
Poruke: 470
*.net
Via: [es] mailing liste



+8 Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina08.10.2007. u 16:30 - pre 201 meseci
Nisam nigde napisao da je onakav konstruktor potreban. Napisao sam (i naglasio) da je to još jedan način za pisanje konstruktora. Za konstruktore gde se vrši čista inicijalizacija, meni je lakše da tako pišem konstruktor, a i čim vidim taj oblik konstruktora znam da tu samo inicijalizujem atribute bez drugih stvari (recimo inicijalizacije nekih struktura i sl.) što mi može biti korisno u kasnijem radu. Još ako lepo to složiš u par redova, nema šta da bude nepregledno. Tebi možda ne odgovara takav stil pisanja konstruktora, ali mislim da to nije razlog da ga nazivaš "sumanutim".

Isto ovo važi i za new. Pitao sam dečka zašto ne instancira pomoću new očekujući da mi obrazloži svoju odluku i kaže: "ne znam drugačije", "zbog toga i toga" ili šta god treće. Nigde ja nisam napisao da je to pogrešno.

A u vezi sa tvojim postom, ja se recimo ne bi složio sa izostavljanjem destruktora. Opet se radi o dobroj praksi sa kojom se slaže izvestan broj autora koje sam čitao. Većina njih predlaže da se (zbog načina na koji radi C kompajler) uvek piše podrazumevani konstruktor, a sa njim u paru i destruktor. Jedan razlog je recimo lakše održavanje, jer posle ne moraš da ganjaš kôd i tražiš gde si pisao, a gde nisi konstruktore i destruktore.

Opet kažem, ovo je neki moj stil i nešto što ja smatram dobrom praksom. Ako se sa time ne slažeš, slobodno iznesi svoje argumente. Ja se neću upuštati u dalju raspravu sa tobom po ovom pitanju.
 
Odgovor na temu

pcaca
Aleksandar
Makedonija

Član broj: 5333
Poruke: 92
79.125.255.*



Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina11.10.2007. u 22:35 - pre 201 meseci
Ovaj nacin pisanja konstruktora koristi "initialization list" i je preporucen:
Code:
Pravokutnik(int mduzina, int msirina) : sirina(msirina), duzina(mduzina) { }

Na ovaj nacin se vrsi inicijalizacija promenljivih sto je i zadatak konstruktora. U slucaj kada se vrednost dodeljuje u telu konsturkotra onda se vrsi assignment sto nije isto sto i initialization. Inicijalizacija se brze izvrsava nego dodeljivanje vrednosti.

Naravno ima i neke situacije kada je potrebno da se koristi assignment

http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6
 
Odgovor na temu

DjoleReject
Djordje Knezevic
Zvezdara

Član broj: 85258
Poruke: 309
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina12.10.2007. u 14:28 - pre 201 meseci
Citat:
pcaca: Ovaj nacin pisanja konstruktora koristi "initialization list" i je preporucen:
Code:
Pravokutnik(int mduzina, int msirina) : sirina(msirina), duzina(mduzina) { }

Na ovaj nacin se vrsi inicijalizacija promenljivih sto je i zadatak konstruktora. U slucaj kada se vrednost dodeljuje u telu konsturkotra onda se vrsi assignment sto nije isto sto i initialization. Inicijalizacija se brze izvrsava nego dodeljivanje vrednosti.

Naravno ima i neke situacije kada je potrebno da se koristi assignment :)

http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6


Evo u rukama imam cetiri knjige nasmenjene ucenju osnova C++a i svaka ovakvu inicijalizaciju pominje u mnogo kasnijim poglavljima (cak je nisam nasao u Libertyjevoj knjizi). Nema sumnje da je ovo sasvim regularan kod i da radi ono za sta je namenjen, ja sam samo sporio da pocetniku treba reci kako njegov konstruktor ne valja, jer je sasvim dobar. Jos ako uzmemo u obzir da i na tom linku koji si postovao pise kako u ovom slucaju nema nikakve razlike u brzini, komentar jos vise gubi na smislu.
Ovo je jedan komplikovan jezik, tezak za ucenje. Ako zelimo, mozemo ga zakomplikovati do beskraja (pogledaj takmicenja u oblasti obfuskacije), ali cilj je valjda da se stvari olaksaju koliko je to moguce. Covek koji jos ne zna kako bi rasporedio kod po fajlovima svakako nije prijemcivo uvo za ulazenje u finese.

@lukeguy
Nije OK reci nekome da neces vise raspravljati nakon sto si izneo deset argumenata. Ali ako vec toliko licno shvatas ove rasprave, onda mogu i ja da batalim... Uzdravlje.
De si Deda...
 
Odgovor na temu

xploiter

Član broj: 119649
Poruke: 116
*.PPPoE-4441.sa.bih.net.ba.



+1 Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina12.10.2007. u 18:11 - pre 201 meseci
Znam podjeliti kod na pravokutnik.h i main.cpp, ali ne znam kako bi ga podjelio na main.cpp, pravokutnik.cpp, i pravokutnik.h kako si ti naveo???

 
Odgovor na temu

DjoleReject
Djordje Knezevic
Zvezdara

Član broj: 85258
Poruke: 309
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina13.10.2007. u 19:23 - pre 201 meseci
Definicije funkcija iz klase Pravokutnik treba da idu u fajl pravokutnik.cpp. Na pocetku tog fajla napises
#include "pravokutnik.h"
To isto napises i na pocetku fajla main.cpp.
Obicaj je (da ne pocnem novi flame - mozda ima i drugih misljenja...) da u taj cpp fajl idu sve funkcije cije telo je nesto duze. Pod obavezno bi trebalo tamo da idu funkcije koje imaju neku petlju u sebi, a neki smatraju da svaka funkcija treba biti definisana u cpp fajlu, dok u h fajlu ostaju samo funkcije obelezene sa inline.

Znaci - deklaracije unutar klase, definicije u cpp fajlu, npr:

.h fajl:

ispisi();

.cpp fajl:

void Pravokutnik::ispisi(){ cout << "pisem se"; }
De si Deda...
 
Odgovor na temu

pcaca
Aleksandar
Makedonija

Član broj: 5333
Poruke: 92
79.125.231.*



Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina13.10.2007. u 21:06 - pre 201 meseci
Citat:
DjoleReject: Evo u rukama imam cetiri knjige nasmenjene ucenju osnova C++a i svaka ovakvu inicijalizaciju pominje u mnogo kasnijim poglavljima (cak je nisam nasao u Libertyjevoj knjizi). Nema sumnje da je ovo sasvim regularan kod i da radi ono za sta je namenjen, ja sam samo sporio da pocetniku treba reci kako njegov konstruktor ne valja, jer je sasvim dobar. Jos ako uzmemo u obzir da i na tom linku koji si postovao pise kako u ovom slucaju nema nikakve razlike u brzini, komentar jos vise gubi na smislu.
Ovo je jedan komplikovan jezik, tezak za ucenje. Ako zelimo, mozemo ga zakomplikovati do beskraja (pogledaj takmicenja u oblasti obfuskacije), ali cilj je valjda da se stvari olaksaju koliko je to moguce. Covek koji jos ne zna kako bi rasporedio kod po fajlovima svakako nije prijemcivo uvo za ulazenje u finese.

Nije mi bila namera izazivati veci flame, samo sam hteo izneti moje misljenje. Ja sam ucio C++ uglavno iz "C++ Primer, Fourth Edition - Stanley B. Lippman, Josée Lajoie, Barbara E. Moo". I tamo se iz pocetka u svaki konstruktor koristi initialization list. Normalno je da svako koristi onaj nacin koji je prvi naucio iz njegove prve i omiljene knjige

Jedan kratak isjecak is knjige, koji je posebno naglasen kao savjet:
Citat:
Advice: Use Constructor Initializers
In many classes, the distinction between initialization and assignment is strictly a matter of low-level efficiency: A data member is initialized and assigned when it could have been initialized directly. More important than the efficiency issue is the fact that some data members must be initialized.

Note: We must use an initializer for any const or reference member or for any member of a class type that does not have a default constructor.

By routinely using constructor initializers, we can avoid being surprised by compile-time errors when we have a class with a member that requires a constructor initializer.

Slazem se sa tobom da pocetnike ne trebamo opterecivati sa ovakvim diskusijama i da u ovaj konkretni slucaj nema skoro nikakve razlike kako ce biti definisan konstruktor.

Nadam se da nismo zubnili pokretaca teme sa ovim flame-om i off-topic diskusijom.
 
Odgovor na temu

DjoleReject
Djordje Knezevic
Zvezdara

Član broj: 85258
Poruke: 309
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina13.10.2007. u 22:21 - pre 201 meseci
Uf, imam i tu knjigu, ali moram priznati da je proslo dve godine citanja drugih dok sam se dohvatio nje... Doduse, tada sam shvatio da mi je 80% onoga sto pise u njoj vec poznato, ali je njena masa valjda delovala obeshrabrujuce. I dalje mi je apsolutni autoritet kad imam dilemu...
De si Deda...
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Klasa Pravougaonik (Pravokutnik) - obim, povrsina

[ Pregleda: 6914 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.