mehanizmi agregacije
DESCRIPTION
Mehanizmi agregacije. *. Polja. *. Jednodimenzionalna polja: deklaracija. format tip_podatka identifikator [ broj ];. primjer float x[5];. prvi član ima indeks nula. float ------------ x[0]. float ------------ x[1]. float ------------ x[2]. float ------------ x[3]. float - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/1.jpg)
Mehanizmi Mehanizmi agregacijeagregacije
*
![Page 2: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/2.jpg)
PoljaPolja
*
![Page 3: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/3.jpg)
Jednodimenzionalna polja: deklaracijaJednodimenzionalna polja: deklaracija
float------------
x[0]
float------------
x[1]
float------------
x[2]
float------------
x[3]
float------------
x[4]
formatformat
tip_podatkatip_podatka identifikator identifikator [ [brojbroj];];
prvi član ima indeks prvi član ima indeks nulanula
20 byte-ova20 byte-ova
4 byte-a4 byte-a
*
float[5]------------
x::
primjer
float x[5];
![Page 4: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/4.jpg)
PoljaPolja• Polje je niz varijabli istog tipa podataka Polje je niz varijabli istog tipa podataka
definiranih zajedničkim imenom, koje se nalaze definiranih zajedničkim imenom, koje se nalaze na uzastopnim memorijskim lokacijama.na uzastopnim memorijskim lokacijama.
• Pojedinom elementu polja pristupa se preko Pojedinom elementu polja pristupa se preko imena polja i indeksa (rednog broja) elementa u imena polja i indeksa (rednog broja) elementa u polju.polju.
• Indeksi polja u programskom jeziku C++ su Indeksi polja u programskom jeziku C++ su cijeli brojevi između 0 i duljine polja cijeli brojevi između 0 i duljine polja umanjenog za 1.umanjenog za 1.
*
![Page 5: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/5.jpg)
Jednodimenzionalna polja: definicijaJednodimenzionalna polja: definicija
1342.5 4.7 23.4 12. -72e12
primjer
float x[]={1342.5,4.7,23.4,12.,-72e12};
*
float[5]------------
x::
x[0]x[0] x[1]x[1] x[2]x[2] x[3]x[3] x[4]x[4]
formatformat
tip_podatka tip_podatka identifikatoridentifikator [ ]={ [ ]={vrijednost_1, vrijednost_2, ..., vrijednost_nvrijednost_1, vrijednost_2, ..., vrijednost_n};};
Nije potrebno navoditi broj Nije potrebno navoditi broj elemenataelemenata
![Page 6: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/6.jpg)
Dvodimenzionalna polja: deklaracija i definicijaDvodimenzionalna polja: deklaracija i definicijaprimjer
int A[3][5] = {{11,12,13,14,15}, {21,22,23,24,25}};
*
int [3] [5]--------------
A:: 11
A[0][0]:A[0][0]:
12 13 14 15
A[0][1]:A[0][1]: A[0][2]:A[0][2]: A[0][3]:A[0][3]: A[0][4]:A[0][4]:
21
A[1][0]:A[1][0]:
22
A[1][1]:A[1][1]:
23
A[1][2]:A[1][2]:
24
A[1][3]:A[1][3]:
25
A[1][4]:A[1][4]:
0
A[2][0]:A[2][0]:
0
A[2][1]:A[2][1]:
0
A[2][2]:A[2][2]:
0
A[2][3]:A[2][3]:
0
A[2][4]:A[2][4]:
Nedefinirani elementi
popunjavaju se nulama
Da nebi!!!Da nebi!!!
![Page 7: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/7.jpg)
#include<iostream>using namespace std;int main() { //inicijalizacija i deklaracijaint Dat[3];int Mjes[]={31,28,31,30,31,30,31,31,30,31,30};int j;
//ponavljanjedo { //unosenje datuma
cout<<"Unosenje datuma (dan mjesec godina): ";for(int i=0;i<=2;i++)
cin>>Dat[i];cout<<endl;
//prestupna godina?if (((Dat[2]%100!=0) && (Dat[2]%4==0)) ||
(Dat[2]%400==0))Mjes[1]=29;
elseMjes[1]=28;
Izračunavanje dana: rješenje s poljimaIzračunavanje dana: rješenje s poljima
*
![Page 8: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/8.jpg)
//inicijalizacija sume_danaint Suma=Dat[0];
//izracunavanjefor(i=0;i<Dat[1]-1;i++)
Suma+=Mjes[i];//ispis
cout<<"Od 01.01. do "<<Dat[0]<<"."<<Dat[1]<<"."<<Dat[2]<<"."<<" proslo je "<<Suma<<" dana."<<endl;
//indikacija krajacout<<"Za nastavak <1>, za prekid <0>: ";cin>>j;cout<<endl;
}while(j==1);return 0;}
*
![Page 9: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/9.jpg)
ZnakovniZnakovninizovinizovi
*
![Page 10: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/10.jpg)
Znakovni nizoviZnakovni nizovi(engl. (engl. charactercharacter stringsstrings, , stringsstrings))
(1)(1) Znakovni nizovi su Znakovni nizovi su jednodimenzionalna znakovnajednodimenzionalna znakovna poljapolja koja koja služe za pohranjivanje služe za pohranjivanje tekstovatekstova::
char VarazdinskiSlikar[]=“Ivo Režek”;char VarazdinskiSlikar[]=“Ivo Režek”;
I
*
v o R e ž e k \0
Na kraju niza automatski se postavlja nul-znak (engl. Na kraju niza automatski se postavlja nul-znak (engl. null-null-charactercharacter). ).
Ispis koji dokazuje postojanje nul-znaka:Ispis koji dokazuje postojanje nul-znaka:for(int i=0;i<=10;i++)for(int i=0;i<=10;i++)
coutcout <<VarazdinskiSlikar[i]<<“\t”<<VarazdinskiSlikar[i]<<“\t”<<(int)(unsigned char)VarazdinskiSlikar[i]<<endl;<<(int)(unsigned char)VarazdinskiSlikar[i]<<endl;
Nije ga potrebno eksplicitno navoditi, ali treba o njemu voditi Nije ga potrebno eksplicitno navoditi, ali treba o njemu voditi računa.računa.
horizontalni tabulator
ispisuje ASCII kôdôd
![Page 11: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/11.jpg)
#include<iostream>#include<iomanip>using namespace std;int main(){
char VarazdinskiSlikar[]="Ivo Režek";cout<<endl; //kombinacija ispisa //s tabulatorom (\t=popunjavanje s lijeva)//i setw (popunjavanje s desna)for(int i=0;i<=9;i++){
cout<<"\t"<<VarazdinskiSlikar[i]<<setw(10);cout<<(int)(unsigned char)VarazdinskiSlikar[i]<<endl;
}cout<<endl;for(i=0;i<=9;i++){
cout<<setw(9)<<VarazdinskiSlikar[i];cout<<"\t"<<(int)(unsigned char)VarazdinskiSlikar[i];cout<<endl;
}system(“pause”);return 0;
}
Dokaz: program P6_1.cppDokaz: program P6_1.cpp
*
![Page 12: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/12.jpg)
Znakovni nizovi: definicija i ispis (primjeri)Znakovni nizovi: definicija i ispis (primjeri)
Primjer definicije znakovnog niza:Primjer definicije znakovnog niza:char Niz[]=char Niz[]=
“Melita Kozina”;“Melita Kozina”;Isti se niz može definirati i ovako:Isti se niz može definirati i ovako:
char Niz[]=char Niz[]= {‘M’,’e’,’l’,’i’,’t’,’a’,’ ’, ‘K’,’o’,’z’,’i’,’n’,’a’,’\0’}; {‘M’,’e’,’l’,’i’,’t’,’a’,’ ’, ‘K’,’o’,’z’,’i’,’n’,’a’,’\0’};
*
Naredba za ispisNaredba za ispiscout<<Niz<<endl;cout<<Niz<<endl;
Što odabrati (koju definiciju, kakav ispis)?
daje isti rezultat kaodaje isti rezultat kaofor(int i=0;i<13;i++) for(int i=0;i<13;i++)
cout<<Niz[i];cout<<Niz[i];cout<<endl;cout<<endl;
Ispisuje sadržajIspisuje sadržajznakovnog nizaznakovnog niza
sve do znaka ‘\0’sve do znaka ‘\0’
potrebno definiratipotrebno definirati
Odgovor: vidjeti sljedeći slOdgovor: vidjeti sljedeći slajdajd
![Page 13: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/13.jpg)
#include<iostream>using namespace std;int main() {
cout<<endl<<"DEFINIRANJE I ISPIS ZNAKOVNOG NIZA"<<endl;char PrviNiz[]="Melita Kozina";char DrugiNiz[]=
{'M','e','l','i','t','a',' ','K','o','z','i','n','a','\0'};char Znak='\"';//navodnicicout<<endl<<"char PrviNiz[]=";cout<<Znak<<"Melita Kozina"<<Znak<<";"<<endl;cout<<endl<<"char DrugiNiz[]=";cout<<"{'M','e','l','i','t','a',' ','K','o','z','i','n','a',' '}”
<<endl<<endl;cout<<"1. cout<<PrviNiz<<endl;"<<endl;cout<<" Ispis: "<<PrviNiz<<endl<<endl;cout<<"2. cout<<DrugiNiz<<endl;"<<endl;
cout<<" Ispis: "<<DrugiNiz<<endl<<endl;cout<<"3. for(int i=0;(DrugiNiz[i] != NULL);i++)
cout<<DrugiNiz[i];"<<endl; cout<<" Ispis: ";
for(int i=0;(DrugiNiz[i] != NULL);i++)cout<<DrugiNiz[i];
cout<<endl; cout<<endl<<"Za kraj <1>: "; cin>>"";return 0;
}
Sljedeći slideSljedeći slide
*
definicije nizadefinicije niza
PrviNiz: ispisPrviNiz: ispis
DrugiNiz: ispis (1)DrugiNiz: ispis (1)
DrugiNiz: ispis (2)DrugiNiz: ispis (2)
ispis definicijaispis definicija
definicija konstante
![Page 14: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/14.jpg)
char Niz[]="Melita Kozina”; //definicijacout<<Niz<<endl; //ispis
PreporukaPreporuka
*
P1_5.exe
![Page 15: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/15.jpg)
Znakovni nizovi: učitavanjeZnakovni nizovi: učitavanje
*
Primjer 1.char tekst[80];cin>>tekst;cout<<tekst;
Primjer 2.char tekst[80];while (cin>>tekst)
cout<<tekst<<endl;
Ispisuje po jednu riječ u redu, ne Ispisuje po jednu riječ u redu, ne prepoznaje kraj! Izvođenje se mora prepoznaje kraj! Izvođenje se mora
nasilno prekinuti!nasilno prekinuti!Dokaz: P6_4.exeDokaz: P6_4.exe
Rješenje jeRješenje je
u uporabi funkcijskih članovaget( )
igetline( )
U čemu je problem?U čemu je problem?U prazninama. One predstavljaju
graničnike koji prekidaju učitavanje podataka.
funkcijski član read( ) ali on radi sa znakom EOF, pa se uglavnom koristi
za učitavanje datoteka.
Postoji još iPostoji još i
Ispisuje samo do prve praznine, Ispisuje samo do prve praznine, prekida izvođenje! Dokaz: P6_3.exe prekida izvođenje! Dokaz: P6_3.exe
PreporukaPreporuka: : prvo izvođenje - jedna riječprvo izvođenje - jedna riječ
drugo izvođenje - dvije riječidrugo izvođenje - dvije riječi
![Page 16: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/16.jpg)
*
get ( ) get ( ) s argumentima: prva varijantas argumentima: prva varijanta
Učitava Učitava znak po znakznak po znak..
Duljina unešenog teksta mora biti Duljina unešenog teksta mora biti manja od duljine niza.manja od duljine niza.
Nakon učitavanja, nizu treba Nakon učitavanja, nizu treba dodati nul-znak.dodati nul-znak.
PraktičnijiPraktičniji je za učitavanje je za učitavanje podataka iz podataka iz datotekedatoteke..
Način radaNačin radaProgramski primjerProgramski primjer
#include<iostream>#include<iomanip>using namespace std;int main() {char tekst[80];int i=0;cout<<“Unesi tekst:”<<endl;while (cin.get(tekst[i]))
if (tekst[i++]=='\n')break;
tekst[i-1]='\0';cout<<“Ispis: “<<endl<<tekst;cout<<endl<<endl<<"Za kraj<1>:";cout << endl;system(“pause”);return 0;
}
![Page 17: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/17.jpg)
*
get ( ) get ( ) bez argumenatabez argumenata
Učitava Učitava znak po znakznak po znak..
‘‘get’ bez argumenata je get’ bez argumenata je funkcijski član tipa ‘int’, a funkcijski član tipa ‘int’, a
vraća kôdvraća kôd znaka koji je učitao. znaka koji je učitao.
Za učitani znak Za učitani znak ‘\n’‘\n’, ‘get’ bez , ‘get’ bez argumenata argumenata vraćavraća vrijednostvrijednost
-1.-1.
Nakon učitavanja, nizu treba Nakon učitavanja, nizu treba dodati nul-znak.dodati nul-znak.
Način radaNačin radaProgramski primjerProgramski primjer#include<iostream>using namespace std;int main() {cout<<endl<<"UCITAVANJE
ZNAKOVNOG NIZA: ";cout<<"get() BEZ ARGUMENATAget() BEZ ARGUMENATA”
<<endl;char tekst[80];int i=0;cout<<endl<<"Unesi tekst (1-79
znakova):"<<endl;while((tekst[i]=cin.get())!= -1)
if (tekst[i++]=='\n')break;
tekst[i-1]='\0';cout<<endl<<"Ispis:"<<endl
<<tekst<<endl;cout<<endl;system(“pause”);return 0;
}
![Page 18: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/18.jpg)
*
get ( ) get ( ) s argumentima: druga varijantas argumentima: druga varijanta
Učitava Učitava znak po znakznak po znak..
Prekida učitavanje kad naiđe Prekida učitavanje kad naiđe na na ‘\n’‘\n’ koji koji ostajeostaje u nizu, pa se u nizu, pa se može učitati najviše (duljina-1) može učitati najviše (duljina-1)
znakova. znakova.
Zaključni Zaključni nul-znaknul-znak dodaje se dodaje se automatskiautomatski..
Najpogodniji način za Najpogodniji način za učitavanje znakovnih nizova.učitavanje znakovnih nizova.
Način radaNačin radaProgramski primjerProgramski primjer
#include<iostream>using namespace std;int main() {cout<<endl<<"UCITAVANJE ZNAKOVNOG NIZA:
OPTIMALNI get()OPTIMALNI get()” <<endl;char tekst[80];cout<<endl<<"Unesi tekst (1-79
znakova):”<<endl;cin.get(tekst, sizeof(tekst));cout<<endl<<"Ispis:"<<endl
<<tekst<<endl;cout<<endl;system(“pause”);return 0;
}
![Page 19: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/19.jpg)
*
getline ( )getline ( )
Učitava Učitava znak po znakznak po znak..
Prekida učitavanje kad naiđe Prekida učitavanje kad naiđe na na ‘\n’.‘\n’.
Automatski Automatski uklanja ‘\n’uklanja ‘\n’ i i dodaje ‘\0’.dodaje ‘\0’.
Također vrlo pogodan način Također vrlo pogodan način za učitavanje znakovnih za učitavanje znakovnih
nizova.nizova.
Način radaNačin radaProgramski primjerProgramski primjer#include<iostream>using namespace std;int main() {cout<<endl<<"UCITAVANJE ZNAKOVNOG NIZA:
OPTIMALNI getline()OPTIMALNI getline()"<<endl;char tekst[80]; cout<<endl<<"Unesi tekst (1-80
znakova):"<<endl;cin.getline(tekst,sizeof(tekst));cout<<endl<<"Ispis:"<<endl<<tekst
<<endl;cout<<endl;system(“pause”);return 0;
}
![Page 20: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/20.jpg)
*
getline ( )getline ( )
Ovaj će cin.getline biti Ovaj će cin.getline biti preskočenpreskočen
Programski primjerProgramski primjer#include<iostream>using namespace std;int main() {cout<<endl<<"UCITAVANJE ZNAKOVNOG NIZA:
OPTIMALNI getline()OPTIMALNI getline()"<<endl;int n;char tekst[80];cout << "Unesi broj: ";cin >> n;cout<<endl<<"Unesi tekst (1-80
znakova):"<<endl;cin.getline(tekst,sizeof(tekst));cout<<endl<<"Ispis:"<<endl<<tekst
<<endl;cout<<endl;system("pause");return 0;
}
Zašto?Zašto?
![Page 21: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/21.jpg)
*
getline ( )getline ( )
Ova naredba ignorira Ova naredba ignorira sadržaj spremnika sadržaj spremnika
unosaunosa
Programski primjerProgramski primjer#include<iostream>using namespace std;int main() {cout<<endl<<"UCITAVANJE ZNAKOVNOG NIZA:
OPTIMALNI getline()OPTIMALNI getline()"<<endl;int n;char tekst[80];cout << "Unesi broj: ";cin >> n;cout<<endl<<"Unesi tekst (1-80
znakova):"<<endl;cin.ignore();cin.getline(tekst,sizeof(tekst));cout<<endl<<"Ispis:"<<endl<<tekst
<<endl;cout<<endl<<endl<<"Za kraj <1>: ";cin>>"";cout<<endl;return 0;
}
![Page 22: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/22.jpg)
ZapisiZapisi
*
![Page 23: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/23.jpg)
Zapis: deklaracijaZapis: deklaracija
double--------------
PrOcj
int----------
sifra
formatformat
structstruct identifikator identifikator {{
deklaracija_1deklaracija_1;;
..
..
..
deklaracija_n;deklaracija_n;
} identifikator,...;} identifikator,...;
88 b bajtaajta*
stud ::
primjer
struct student {int sifra;char imeprez[30];double prosocj;
} stud;
4 4 bbajtaajta
char[30]-----------------------
imeprez
3030 b bajtaajta
![Page 24: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/24.jpg)
ZapisiZapisi
• Zapis je skup podataka koji mogu biti Zapis je skup podataka koji mogu biti međusobno različitih tipovameđusobno različitih tipova
• Svaka komponenta zapisa ima svoje ime preko Svaka komponenta zapisa ima svoje ime preko kojeg joj se pristupa.kojeg joj se pristupa.
*
![Page 25: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/25.jpg)
ZapisiZapisi: primjeri: primjeri#include <iostream>using namespace std;
int main () {int Ocj, B=0, S=0;struct student {
int sifra;char imeprez[30];double prosocj;
} stud;cout << "Sifra: ";cin >> stud.sifra;cout << "Ime i prezime: ";cin.ignore();cin.getline(stud.imeprez,sizeof(stud.imeprez));char Jos='d';
*
![Page 26: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/26.jpg)
ZapisiZapisi: primjeri: primjeriwhile (Jos=='d') { cout << "Ocjena: "; cin >> Ocj; B++; S+=Ocj; cout << "Jos? "; cin >> Jos;}stud.prosocj=(float)S/B;cout << "Student: " << stud.sifra << " " <<
stud.imeprez << " Prosjek: " << stud.prosocj << endl;system("pause");
return 0;}
*
![Page 27: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/27.jpg)
ZapisiZapisiint main () {struct {
int sifra;char imeprez[30];double prosocj;
} stud;...
}
*
Zapisu kojem se Zapisu kojem se odmah pridružuje odmah pridružuje
varijabla i koji se ne varijabla i koji se ne koristi nigdje koristi nigdje
drugdje osim tamo drugdje osim tamo gdje je deklariran gdje je deklariran
nije potrebno nije potrebno definirati ime. Tako definirati ime. Tako
dobijamo tzv. dobijamo tzv. neimenovani zapisneimenovani zapis
![Page 28: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/28.jpg)
ZapisiZapisistruct student {
int sifra;char imeprez[30];double prosocj;
};
int main () {student stud;...
}
*
Zapis se može Zapis se može deklarirati deklarirati posebno i posebno i
koristiti kasnije koristiti kasnije kod kod
deklariranja deklariranja varijablivarijabli
![Page 29: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/29.jpg)
UnijeUnije
*
![Page 30: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/30.jpg)
char[30]------------------------------
imeprez
Unije: deklaracijaUnije: deklaracija
double--------------
PrOcj
int----------
sifra
formatformat
unionunion identifikator identifikator {{
deklaracija_1deklaracija_1;;
..
..
..
deklaracija_n;deklaracija_n;
} identifikator,...;} identifikator,...;
*
stud ::
primjer
union student {int sifra;char imeprez[30];double prosocj;
} stud;
3030 b bajtaajta
![Page 31: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/31.jpg)
UnijeUnije
• Unija je memorijski prostor koji se može koristiti za Unija je memorijski prostor koji se može koristiti za pohranjivanje podataka različitih tipova. pohranjivanje podataka različitih tipova.
• Veličina unije jednaka je najvećem od podataka koji je Veličina unije jednaka je najvećem od podataka koji je u uniji definiranu uniji definiran
• U uniji istovremeno može biti upisana U uniji istovremeno može biti upisana samo jedna samo jedna komponentakomponenta unije. unije.
*
![Page 32: Mehanizmi agregacije](https://reader033.vdocuments.site/reader033/viewer/2022061612/5681592f550346895dc65f3c/html5/thumbnails/32.jpg)
*
UnijeUnijeProgramski primjerProgramski primjer
#include<iostream>using namespace std;union student {
int sifra;char imeprez[30];
};int main() {student stud;cout << "Maticni broj: ";cin >> stud.sifra;cin.ignore();cout << "Ime i prezime: ";
cin.getline(stud.imeprez,sizeof(stud.imeprez));cout << stud.sifra << "\t" <<
stud.imeprez << endl;system("pause");return 0;
}
13ivica
1667855977ivica
Unos:Unos:
Ispis:Ispis:
Cjelobrojna vrijednost Cjelobrojna vrijednost komponente matbr komponente matbr prebrisana komponentom prebrisana komponentom koja sadrži vrijednost niza koja sadrži vrijednost niza znakova. znakova.