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

Objasnjenje naredbi u c++

[es] :: C/C++ programiranje :: C/C++ za početnike :: Objasnjenje naredbi u c++

[ Pregleda: 3808 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

danijel385
Danijel Markic
PMF, Zagreb

Član broj: 57379
Poruke: 13
*.net.t-com.hr.



Profil

icon Objasnjenje naredbi u c++08.05.2006. u 18:41 - pre 218 meseci
Lijepi pozdrav,

nedavno sam poceo uciti c++, a vec imam nekoliko problema/pitanja... Naime jedan frend mi je preporucio da c++ ucim iz ove knjige: Demistificirani C++...

Posto nikako nisam mogao pronaci sto znace ove naredbe u toj knjizi, nadam se da ce netko imati vremena da mi ih malo pojasni...

Ovo je nekoliko programa koje sam nasao na netu...

Code:


#include <iostream>
# include <stdio.h>
# include <stdlib.h>

using namespace std;

class vektor 
{
    private: int i;
    private: int j;
    private: int k;
    friend int main(void);
    friend int skalarni(vektor, vektor);
    friend vektor vektorski(vektor, vektor);
    friend int ispis(vektor, vektor);
};


int skalarni(vektor a, vektor b)
{
    int s;
    s = (a.i*b.i) + (a.j*b.j) + (a.k*b.k);
    return s;
}

vektor vektorski(vektor a,vektor b)
{
    vektor v;
    v.i = (a.j*b.k) - (a.k*b.j);
    v.j = (a.k*b.i) - (a.i*b.k);
    v.k = (a.i*b.j) - (a.j*b.i);
    return v;
}

int ispis(vektor a, vektor b)
{
    vektor v;
     printf("\n   --> Skalarni produkt upisanih vektora je s = %d",  skalarni(a, b) );
     v = vektorski(a, b);
     printf("\n   --> Vektorski produkt upisanih vektora je v = (%d,%d,%d) \n\n ", v.i, v.j, v.k );
     return 0;
}

int main(void)
{
    vektor a, b;
    
    printf("   --> Upis vektora a ! \n");
    printf("   --> Upisi ax vektora a : ");
    scanf("%d", &a.i);
    printf("   --> Upisi ay vektora a : ");
    scanf("%d", &a.j); 
    printf("   --> Upisi az vektora a : ");
    scanf("%d", &a.k); 

    printf("   --> Upis vektora b ! \n");
    printf("   --> Upisi bx vektora b : ");
    scanf("%d", &b.i); 
    printf("   --> Upisi by vektora b : ");
    scanf("%d", &b.j); 
    printf("   --> Upisi bz vektora b : ");
    scanf("%d", &b.k); 
    
    ispis(a,b);
    
    return 0;
}


U ovome me zanima cemu sluzi naredbe:

Code:

using namespace std;


Code:

        friend int main(void);
    friend int skalarni(vektor, vektor);
    friend vektor vektorski(vektor, vektor);
    friend int ispis(vektor, vektor);


Drugi program:
Code:

#include <stdio.h>
#include <iostream> 
#include <string> 

using namespace std; 

class Popis

private:  
        int brUcenika; 
        string *ListaUcenika;     
public: 
    Popis (); 
    ~Popis(); 
    void ispis();
    void dodaj(); 
    void dodaj(string s); 
    void brisi();    
}; 

Popis::Popis(): brUcenika(0) , ListaUcenika (new string[20]) {} 

Popis::~Popis() 

        delete [] ListaUcenika;  


void Popis::ispis(void)

        int i; 
        if (brUcenika!=0) 
        { 
                cout << endl << "\n   --> popis studenata: "<< endl; 
                for (i=0; i < brUcenika; i++) 
                        cout << ListaUcenika[i] <<endl; 
        }
    cout << "..." << endl; 


void Popis::dodaj(void) 

        int i; 
        string ime,prezime,ucenik;
    cout <<"\n   --> ime: "; 
    cin>>ime;
    cout <<"\n   --> prezime: "; 
    cin>>prezime;
    ucenik=ime+" "+prezime;    
    brUcenika++;
    string* pomocni =new string[brUcenika];       
    for (i=0;i<brUcenika-1;i++)                
                { 
                       pomocni[i]=ListaUcenika[i];
                } 
    pomocni[brUcenika-1]=ucenik;
    ListaUcenika=new string[brUcenika]; 
    for (i=0;i<brUcenika;i++)  
         {
            ListaUcenika[i]=pomocni[i];
         }
    delete [] pomocni;
    cout << "\n   --> Student je upisan."<< endl;    


void Popis::dodaj(string ucenik) 

        int i; 
       brUcenika++;
       string* pomocni =new string[brUcenika];
       for (i=0;i<brUcenika-1;i++)                
                { 
                       pomocni[i]=ListaUcenika[i];
                } 
    pomocni[brUcenika-1]=ucenik;
    ListaUcenika=new string[brUcenika]; 
    for (i=0;i<brUcenika;i++)  
         {
            ListaUcenika[i]=pomocni[i];
         }
    delete [] pomocni;
           



void Popis::brisi(void) 

        int i, flag=0; 
        string ime,prezime,ucenik;
    cout <<"\n   --> ime: "; 
    cin>>ime;
    cout <<"\n   --> prezime: "; 
    cin>>prezime;
    ucenik=ime+" "+prezime;
    for (i=0;i<brUcenika;i++)                
        { 
                if (ListaUcenika[i]==ucenik) 
            {
                flag=1;
            }
    }
    if(! flag)
        {
            cout << "\n   --> Student nije naveden u bazi." << endl; 
            return; 
        }
    flag=0;
    brUcenika--; 
    string* pomocni=new string[brUcenika];
        for (i=0;i<brUcenika;i++)                
        { 
                if (ListaUcenika[i]==ucenik) 
                {
                    flag=1;
                }
                if(flag)
                {
                     pomocni[i]=ListaUcenika[i+1];
                }
                else
                {
                    pomocni[i]=ListaUcenika[i];
                }
        }    
        ListaUcenika=new string[brUcenika];
        for(i=0;i<brUcenika;i++)
        ListaUcenika[i]=pomocni[i];
        delete [] pomocni;
        cout << "\n   --> Student je obrisan." << endl; 
}

int main() 

    Popis popis;
    char izbor;
    do
    {
        switch (izbor)
        {
               case '1': popis.ispis();
               break;
               case '2': popis.dodaj();
               break;
               case '3': popis.brisi();
               break;
               default: 
               break;
        }
    cout<<"\n   --> 1. Ispis prisutnih studenata"<<endl;
    cout<<"\n   --> 2. Upis novog studenta"<<endl;
    cout<<"\n   --> 3. Brisanje studenta"<<endl;
    cout<<"\n   --> 4. Kraj"<<endl;
    cout<<"\n   --> Vas odabir : " ;
    cin>>izbor;
    }
    while(izbor != '4');
    return 0;



Ovdje me zanima cemu sluze ove naredbe(pogotovo ::):
Code:

    ~Popis(); 

        Popis::Popis(): brUcenika(0) , ListaUcenika (new string[20]) {} 
        Popis::~Popis() 


Posljednji program:
Code:

#include<iostream>

using namespace std;

enum Figura
{
    prazno, 
    bijelipjesak, 
    bijelitop, 
    bijelikonj, 
    bijelilovac, 
    bijelakraljica, 
    bijelikralj, 
    crnipjesak, 
    crnitop, 
    crnikonj, 
    crnilovac, 
    crnakraljica, 
    crnikralj
};

class sahPolje
{
    private:
    Figura figurica; 
    public: 
    sahPolje(); 
    void namjesti(Figura fig); 
    Figura kojaFig(); 
};

sahPolje::sahPolje() : figurica(static_cast<Figura>(0))
{
};

void sahPolje::namjesti(Figura fig)
{
    figurica = fig;
}

Figura sahPolje::kojaFig()
{
    return figurica;
}

void stanje(sahPolje Sahovnica[][8])
{
    int i, j;
    for(i = 0; i < 8; i++)
        {
            for(j = 0; j < 8; j++)
                {
                    cout.width(4);
                    cout << Sahovnica[i][j].kojaFig();
                }
            cout << endl;
        }
}

int main()
{
    int i, j;
    sahPolje Sahovnica[8][8];
    Sahovnica[0][0].namjesti(crnitop);
    Sahovnica[0][1].namjesti(crnikonj);
    Sahovnica[0][2].namjesti(crnilovac);
    Sahovnica[0][3].namjesti(crnikralj);
    Sahovnica[0][4].namjesti(crnakraljica);
    Sahovnica[0][5].namjesti(crnilovac);
    Sahovnica[0][6].namjesti(crnikonj);
    Sahovnica[0][7].namjesti(crnitop);
    for(i = 0; i < 8; i++)
        Sahovnica[1][i].namjesti(crnipjesak);
    for(i = 2; i < 6; i++)
        {
            for(j = 0; j < 8; j++)
            Sahovnica[i][j].namjesti(prazno);
        }
    for(i = 0; i < 8; i++)
        Sahovnica[6][i].namjesti(bijelipjesak);
    Sahovnica[7][0].namjesti(bijelitop);
    Sahovnica[7][1].namjesti(bijelikonj);
    Sahovnica[7][2].namjesti(bijelilovac);
    Sahovnica[7][3].namjesti(bijelikralj);
    Sahovnica[7][4].namjesti(bijelakraljica);
    Sahovnica[7][5].namjesti(bijelilovac);
    Sahovnica[7][6].namjesti(bijelikonj);
    Sahovnica[7][7].namjesti(bijelitop);
    stanje(Sahovnica);
    return 0;
}



U ovom zadatku me zanima cemu sluzi:
Code:

static_cast


Znam da je jako dugacak post... Ispricavam se...
"We haven't the money, so we've got to think." — Ernest Rutherford
-----------------------------------------------------------------
-[ D ¤ E ¤ U ¤ S ]-
 
Odgovor na temu

DjoleReject
Djordje Knezevic
Zvezdara

Član broj: 85258
Poruke: 309
..taman-bg.customer.sbb.co.yu.



+1 Profil

icon Re: Objasnjenje naredbi u c++08.05.2006. u 23:14 - pre 218 meseci
using namespace std
-U ovom trenutku (predpostavljam da si pocetnik) nije bas potrebno da ulazis u sustinu namespace-ova. Pojednostavljeno receno, ukoliko bi radio u nekom vecem projektu (posebno predstavlja problem projekat sa mnogo programera) postoji velika mogucnost da na razlicitim mestima funkcije dobiju isto ime. To se izbegava tako sto naglasis iz kog namespace-a su imena tvojih funkcija. Posto si ovim redom naglasio da se koristis standardnim (std), sprecio si moguce konflikte. (celo ovo objasnjenje uzmi s dozom rezerve, jer nit` ja imam ovde mesta da detaljisem, nit` ti jos uvek imas predznanje da u potpunosti skontas situacije u kojima ces ovo koristis. Uzmi zdravo za gotovo da posle svih includa otkucas i ovaj red.

friend...
Unutar klase je moguce deklarisati neku funkciju koja je definisana negde izvan nje. Ovime postizes da ta f.-ja ima pravo pristupa privatnim clanovima klase u kojoj je deklarisana. Nisam siguran da je ovo sustina tvog pitanja, a ako nije - ti pitaj konkretnije.

::
Kada izvan klase zelis da se obratis nekoj funkciji koja je deo klase (metoda), to naglasis tako sto napises ImeKlase::imeFunkcije(). Ovo je neophodno, jer ime funkcije definisane u klasi ne moze da se vidi izvan nje ako ne kazes gde je. Shvati ovo kao neki vid putanje do funkcije.

~ImeKlase
Ovo je destruktor. Potrebu da se on pravi ne mogu da ti ovde objasnjavam, a ako je nema ni u doticnoj knjizi - menjaj knjigu!
Ukratko, ovo je funkcija cija je jedina svrha da obrise sve u objektu, nakon njegovog unistavanja. Ukoliko je nema, moze doci do "memory leak-a", gde su ti blokovi memorije ostali alocirani, a ne sluze nicemu.

Jel` to sve? :)

[Ovu poruku je menjao DjoleReject dana 09.05.2006. u 00:16 GMT+1]
De si Deda...
 
Odgovor na temu

danijel385
Danijel Markic
PMF, Zagreb

Član broj: 57379
Poruke: 13
*.net.t-com.hr.



Profil

icon Re: Objasnjenje naredbi u c++09.05.2006. u 00:48 - pre 218 meseci
Da, sorry, zaboravio sam napomenuti da sam pocetnik

Mislim da je to sve... Ako bude jos pitanja, budem se javio...

Puno hvala...
"We haven't the money, so we've got to think." — Ernest Rutherford
-----------------------------------------------------------------
-[ D ¤ E ¤ U ¤ S ]-
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Objasnjenje naredbi u c++

[ Pregleda: 3808 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

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