Documente Academic
Documente Profesional
Documente Cultură
Glava je prvi element u listi, a ima pomoćnu ulogu - pristup vezanoj listi.
Pokazivač na listu sadr�i upravo adresu glave liste. U pravilu se ne
koristi za pohranu podataka.
Vezana lista:
� nema poznat broj elemenata liste
� kod upisa podataka potrebno je najprije dinamički alocirati element
liste i
upisati mu podatkovni sadr�aj
� svaki element vezane liste mora se odvojeno dealocirati pomoću
operatora delete
� elementi vezane liste mogu sadr�avati podatke različitog tipa
Polje:
� broj elemenata je poznat (zadan kao dimenzija polja)
� podaci u elementima moraju biti istog tipa
� kod upisa podataka element polja već je alociran i pristupa mu se uz
pomoć indeksa
� statičko polje dealocira se pri zavr�etku programa
� dinamičko polje dealocira se pomoću operatora delete [ ]
Postupak:
� prolazi se ponavljaju dok ima zamjena (indikator=1)
� unutar prolaza koristi se pokazivač tekuci za kretanje kroz listu
� pokazivač slijedeci sadr�i adresu slijedećeg elementa u listi (tekuci
-> slijedeci), a prethodni adresu prethodnog elementa
� usporede se matični brojevi u tekućem i slijedećem elementu
- ako ima potrebe za �zamjenom mjesta�:
� u tri koraka preusmjere se pokazivači
� indikator = 1 (indikator zamjene)
� Statičko polje
� naziv polja predstavlja implicitni (nije alociran u radnoj memoriji)
pokazivač na polje
� adresa svakog elementa polja izračunava se na temelju vrijednosti
indeksa i bazne adrese (sadr�i je implicitni pokazivać
� Dinamičko polje
� u radnoj memoriji alociran je eksplicitni pokazivač na polje
� adresa svakog elementa polja izračunava se na temelju vrijednosti
indeksa i adrese polja (= kao i kod statičkog polja)
7. �to su to strukture?
9. �to je to potprogram?
Zbog toga �to se niz koji se sortira dijeli na manje cjeline "particije" te
se one sortiraju s obzirom na sidro, zbog toga je ovaj sort iznimno brz.
Javno sučelje klase čine svi njeni članovi s javnim pristupom (public).
Preko javnog sučelja objekti komuniciraju s okolinom (ostalim dijelovima
programa).
1. �to je to konstruktor?
2. �to je to destruktor?
Destruktor također ima naziv isti kao i klasa, samo �to ispred naziva
klase dolazi znak ~ (tilda). Poziva se automatski kod dealokacije
objekta. Specifičnosti destruktora u odnosu na ostale metode:
� destruktor nema argumente,
� destruktor (kao i konstruktor) nema tip, ne vraća vrijednost i ne
nasljeđuje se.
#include <iostream.h>
class ckonstruktor {
public:
ckonstruktor() {
cout <<"Konstruktor"<<endl;
}
};
void main() {
ckonstruktor *objekt;
objekt = new ckonstruktor;
delete objekt;
}
4. Napi�ite klasu koja sadr�i destruktor i primjer pokretanja.
#include <iostream.h>
class cdestruktor {
public:
cdestruktor() {
cout <<�Konstruktor�<<endl;
}
~cdestruktor() {
cout <<"Destruktor"<<endl;
}
};
void main() {
cdestruktor *objekt;
objekt = new cdestruktor;
delete objekt;
}
Poziv metode:
lista -> dodaj_element();
6. Napi�ite metodu za brisanje elementa vezane liste predmeta
prema �ifri predmeta.
Poziv metode:
lista->brisi_element(sifra_predmeta);
Poziv metode:
lista->pretrazi_listu(sifra_robe);
8. Napi�ite metodu za dealokaciju vezane liste robe.
croba *dealokacija_liste(){
croba *tekuci,*prethodni;
prethodni=this;
tekuci=this->slijedeci;
while (tekuci){
delete prethodni;
prethodni=tekuci;
tekuci=tekuci->slijedeci;
}
delete prethodni;
return NULL;
};
Poziv metode:
croba *roba = new croba;
roba=roba->dealokacija_liste();
#include <iostream.h>
class cnamjestaj {
public: int godina_proizvodnje;
char materijal [50];
};
class cormar : private cnamjestaj{
public: int sirina;
int visina;
int dubina;
cormar() {
cout <<"Godina proizvodnje: "; cin >>godina_proizvodnje;
cout <<"Materijal: "; cin.ignore();
cin.getline(materijal,50);
cout <<"Sirina: "; cin >> sirina;
cout <<"Visina: "; cin >> visina;
cout <<"Dubina: "; cin >> dubina;
cout <<"Ormar: "<<godina_proizvodnje<<" "<<materijal;
cout <<sirina<<"x"<<visina<<"x"<<dubina<<endl;
}
};
void main() {
cormar *ormar = new cormar;
delete ormar;
}
#include <iostream.h>
class cgalaksija {
public: char ime_galaksije [50];
};
class czvijezda : protected cgalaksija{
public: int broj_zvijezda;
char najveca_zvijezda[50];
void unos() {
cout <<"Ime galaksije: ";cin.getline(ime_galaksije,50);
cout <<"Broj zvijezda: "; cin >> broj_zvijezda;
cout <<"Najveca zvijezda: ";
cin.ignore();cin.getline(najveca_zvijezda,50);
cout <<"Galaksija: "<<ime_galaksije<<endl;
cout <<"Broj zvijezda: "<<broj_zvijezda<<endl;
cout <<"Najveca zvijezda: "<<najveca_zvijezda<<endl;
}
};
void main() {
czvijezda *zvijezda = new czvijezda;
zvijezda->unos();
delete zvijezda;
}
12. Napi�ite primjer gdje klasa mobilnih telefona javno nasljeđuje
klasu telefona.
#include <iostream.h>
class ctelefon {
public: char ime_proizvodjaca [50];
};
class cmobitel : public ctelefon{
public: int broj_modela;
char novi_model[50];
void unos() {
cout <<"Ime proizvodjaca:
";cin.getline(ime_proizvodjaca,50);
cout <<"Broj modela: "; cin >> broj_modela;
cout <<"Novi model: ";
cin.ignore();cin.getline(novi_model,50);
cout <<"Proizvodjac: "<<ime_proizvodjaca<<endl;;
cout <<"Broj modela: "<<broj_modela<<endl;
cout <<"Novi model: "<<ime_proizvodjaca<<"
"<<novi_model<<endl;
}
};
void main() {
cmobitel *mobitel = new cmobitel;
mobitel->unos();
delete mobitel;
}
#include <iostream.h>
class cknjiga {
public: char ime_autora [50];
};
class croman : private cknjiga{
public: int broj_romana;
char najbolji_roman[50];
void unos() {
cout <<"Ime autora: ";cin.getline(ime_autora,50);
cout <<"Broj romana: "; cin >> broj_romana;
cout <<"Najbolji roman: ";
cin.ignore();cin.getline(najbolji_roman,50);
cout <<"Autor: "<<ime_autora<<endl;;
cout <<"Broj romana: "<<broj_romana<<endl;
cout <<"Najbojli roman: "<<najbolji_roman<<endl;
}
};
void main() {
croman *roman = new croman;
roman->unos();
delete roman;
}
class klasa{
public:
int podatak1;
char podatak2[32];
};
class klasaS{
public:
int podatak_klaseS;
char podatak_klaseS[32]; klasa objekt_klase_klasa;
};
klasaS *Objekt;
4. Napi�ite primjer sadr�avanja po referenci.
class klasa{
public:
int podatak1;
char podatak2[32];
};
class klasaS{
public:
int podatak_klaseS;
char podatak_klaseS[32];
klasa *objekt_klase_klasa;
klasaS(){
objekt_klase_klasa = new klasa;
}
~klasaS(){
delete objekt_klase_klasa;
}
};
klasaS *Objekt;
class cstudent{
public:
int mat_br;
char prez_ime[35];
void unos(){
cout << "Maticni broj:";cin>>mat_br;
cout << "Prezime i ime:";cin>>prez_ime;
};
void ispis(){
cout << "Maticni broj:"<<mat_br<<endl;
cout << "Prezime i ime:"<<prez_ime<<endl;
};
};
class clista{
public:
clista *slijedeci;
cstudent student; // sadrzavanje po vrijednosti
void unos(){
student.unos();
};
void ispis(){
student.ispis();
};
};
int main(){
clista *lista=new clista;
lista->slijedeci=NULL;
lista->unos();
lista->ispis();
delete lista;
}
class clista{
class cstudent{
public:
int mat_br;
};
public:
clista *slijedeci;
cstudent student;
};
int main(){
clista *lista = new clista;
lista->slijedeci=NULL;
lista->student.mat_br = 35000;
delete lista;
}