You are on page 1of 84

/* Za ucitani broj izdavackih kuca stvorite 2d polje mjesecnih izdanja knjiga

za svaku izdavacku kucu (redak polja = broj komada izdanih knjiga po mjesecima
jedne izdavacke kuce). Stvorite 1d polje prosjecno izdanih knjiga za svaku izdavacku
kucu i za svaki mjesec izracunajte prosjecno izdane knjige i upisite kao zadnji podatak
tog stupca u novom retku. Ispisite 2d i 1d polje. */
#include "stdafx.h"
#include <iostream>
#define M 50
#define N 12
using namespace std;
void main()
{
int br, knjige[M][N], i, j;
float prik[M]={0}, prmj[N]={0};
cout<<"Upisite broj izdavackih kuca:
cin>>br;

";

for(i=0; i<br; i++)


for(j=0; j<N; j++)
{
cout<<"Upisite broj izdanih knjiga za "<<i+1<<". izdavacku kucu za
"<<j+1<<". mjesec:
";
cin>>knjige[i][j];
prik[i]+=knjige[i][j];
prmj[j]+=knjige[i][j];
}
for(i=0; i<br; i++)
prik[i]/=N;
for(i=0; i<N; i++)
prmj[i]/=br;
for(i=0; i<N; i++)
knjige[br][i]=prmj[i];
cout<<"Mjesecna izdanja knjiga po izdavackim kucama:"<<endl;
for(i=0; i<=br; i++)
{
for(j=0; j<N; j++)
cout<<knjige[i][j]<<'\t';
cout<<endl;
}
cout<<"Prosjecno izdane knjige za svaku izdavacku kucu:"<<endl;
for(i=0; i<br; i++)
cout<<prik[i]<<'\t';
cout<<endl<<endl<<endl;
}

/* Stvorite polje od n naziva obrazovnih ustanova i ucitajte naziv obrazovne ustanove za


koju zelite provjeriti da li se nalazi u ucitanom polju i ako se nalazi ispisite ga
naopacke, a ako ga nema, ispisite naziva nema. Pronadjite u polju naziva najdulji naziv
i kopirajte u string naziv i prebrojite koliko ima rijeci i svako prvo slovo svake
rijeci pretvorite u veliko slovo. Ispisite sve. */
#include "stdafx.h"
#include <iostream>
#include <string>
#include <ctype.h>
#define M 50
using namespace std;
void main()
{
int n, i, postoji, duljina=0, razmak=0;
char ust[M][M], provjera[M], naziv[M];
cout<<"Upisite broj ustanova:
";
cin>>n;
cin.ignore();
cout<<endl;
for(i=0; i<n; i++)
{
cout<<"Upisite naziv "<<i+1<<". ustanove:
cin.getline(ust[i], M-1);
if(strlen(ust[i])>duljina)
{
strcpy(naziv, ust[i]);
duljina=strlen(ust[i]);
}
}
cout<<endl<<"Upisite naziv za provjeru:
";
cin.getline(provjera, M-1);
postoji=0;
for(i=0; i<n; i++)
if(strcmp(ust[i], provjera)==0)
{
postoji=1;
break;
}
if(postoji==1)
for(i=(strlen(provjera)-1); i>=0; i--)
cout<<provjera[i];
else
cout<<"Naziva nema.";

";

naziv[0]=toupper(naziv[0]);
for(i=0; naziv[i]!='\0'; i++)
if(naziv[i]==' ')
{
razmak++;
naziv[i+1]=toupper(naziv[i+1]);
}
razmak++;
cout<<endl<<endl<<"Upisane ustanove:"<<endl;
for(i=0; i<n; i++)
cout<<ust[i]<<endl;

cout<<endl<<"Najdulji naziv:
"<<naziv<<endl;
cout<<"Broj rijeci naziva:
"<<razmak<<endl<<endl<<endl;

/* U main f-ji ucitajte naziv skole i broj ucenika te skole. U f-ji suma_znakova
pronadjite sumu ASCII kodova upisanog naziva skole, a u f-ji suma znamenaka pronadjite
sumu znamenaka broja ucenika. Zbrojite dobivene sume i u f-ji pretvori pretvorite
dobiveni zbroj u sustav s bazom 17. Ispisite sve. */
#include "stdafx.h"
#include <iostream>
#define M 50
using namespace std;
int suma_znakova(char x[])
{
int suma=0;
for(int i=0; i<strlen(x); i++)
suma+=x[i];
}

return suma;

int suma_znamenaka(int y)
{
int suma=0;
while(y!=0)
{
suma+=y%10;
y/=10;
}
return suma;
}
void pretvori(int z)
{
int ostatak;
if(z>16)
pretvori(z/17);
ostatak=z%17;
if(ostatak>9) cout<<char(ostatak+55);
else cout<<ostatak;
}
void main()
{
char skola[M];
int n, sznak, sznam;
cout<<"Upisite naziv skole:
cin.getline(skola, M-1);
cout<<"Upisite broj ucenika:
cin>>n;

";
";

sznak=suma_znakova(skola);
sznam=suma_znamenaka(n);

cout<<endl<<"Suma ASCII kodova znakova naziva:


"<<sznak<<endl;
cout<<"Suma znamenaka broja ucenika:
"<<sznam<<endl;
cout<<"Suma sumi u sustavu s bazom 17:
";
pretvori((sznak+sznam));
cout<<endl<<endl<<endl;

/* Z04:
Napisite program koji u f-ji stvara dinamicki niz vozacki u koji se za n kandidata
unose brojevi bodova na vozackom ispitu. U f-ji sortiraj sortirajte padajuci
niz vozacki, a u f-ji prolaz upisite u dinamicki niz prolaze sve brojeve bodova koji
su veci od razlike najveceg i najmanjeg broja bodova. Ispisite nizove vozacki i prolaze.
*/
#include "stdafx.h"
#include <iostream>
using namespace std;
int stvori(int *x, int n)
{
int i, najveci=0;
for(i=0; i<n; i++)
{
cout<<"Upisite broj bodova za "<<i+1<<". kandidata:
cin>>*(x+i);
if(*(x+i)>najveci)
najveci=*(x+i);
}
cout<<endl;
}

return najveci;

int najmanji(int *x, int n, int provjera)


{
for(int i=0; i<n; i++)
if(*(x+i)<provjera)
provjera=*(x+i);
return provjera;
}
void sortiraj(int *x, int n)
{
int i, j;

for(i=0; i<n; i++)


for(j=i+1; j<n; j++)
if(*(x+i)<*(x+j))
{
int temp=*(x+i);
*(x+i)=*(x+j);
*(x+j)=temp;
}

int provjera(int *x, int n, int razlika)


{
int br;
for(int i=0; i<n; i++)
if(*(x+i)>razlika)
br++;
return br;
}

";

void prolaze(int *x, int n, int *y, int razlika)


{
int i, j=0;

for(i=0; i<n; i++)


if(*(x+i)>razlika)
{
*(y+j)=*(x+i);
j++;
}

void ispis(int *x, int n)


{
int i;
for(i=0; i<n; i++)
cout<<*(x+i)<<'\t';
cout<<endl<<endl;
}
void main()
{
int n, najv, najm, razlika, br;
cout<<"Upisite broj kandidata:
cin>>n;
cout<<endl;

";

int *vozacki=new int[n];


najv=stvori(vozacki,n);
najm=najmanji(vozacki,n,najv);
sortiraj(vozacki,n);
razlika=najv-najm;
br=provjera(vozacki,n,razlika);
int *prolaz=new int[br];
prolaze(vozacki,n,prolaz,razlika);
ispis(vozacki,n);
ispis(prolaz,br);
cout<<endl;
}

* Z05:
Stvorite 2D dinamicko polje obrt u koji se za n obrtnika unosi broj predstavnistava
i za svako se unosi njegova godisnja zarada. Izracunajte za svaki obrt razliku najvece
i prosjecne zarade i upisite kao drugi podatak u njegovom retku. Ispisite polje obrt. */
#include "stdafx.h"
#include <iostream>
using namespace std;
void stvori(float **x, int n)
{
int i, br;
for(i=0; i<n; i++)
{
cout<<"Upisite broj predstavnistava "<<i+1<<". obrtnika:
cin>>br;

";

x[i]=new float[br+2];
x[i][0]=float(br);
}
}

cout<<endl;

void upisi(float **x, int n)


{
int i, j;
float najveca, prosjek;
for(i=0; i<n; i++)
{
prosjek=0;
najveca=0;

obrtnika:

for(j=2; j<=x[i][0]+1; j++)


{
cout<<"Upisite godisnju zaradu "<<j-1<<". predstavnistva "<<i+1<<".
";
cin>>x[i][j];
prosjek+=x[i][j];
if(x[i][j]>najveca)
najveca=x[i][j];
}
prosjek/=x[i][0];
x[i][1]=najveca-prosjek;
cout<<endl;

void ispisi(float **x, int n)


{
int i, j;
for(i=0; i<n; i++)
{
for(j=0; j<=x[i][0]+1; j++)
cout<<x[i][j]<<'\t';

cout<<endl;
}
}

cout<<endl;

void dealociraj(float **x, int n)


{
int i;

for(i=0; i<n; i++)


{
delete []x[i];
}
delete []x;
x=NULL;

void main()
{
int n;
cout<<"Upisite broj obrtnika:
cin>>n;
cout<<endl;

";

float **obrt=new float*[n];


stvori(obrt,n);
upisi(obrt,n);
ispisi(obrt,n);
dealociraj(obrt,n);
cout<<endl;
}

/* Z06:
Stvorite jednostavnu vezanu listu s podacima o stomatoloskim ordinacijama. Podaci:
naziv ordinacije, vlasnik, OIB ordinacije i broj usluga. Napisite u programu sljedece
f-je:
- za dodavanje novog elementa u listu
- za ispis elemenata liste
- za brisanje elemenata liste
Napravite meni izbora i f-ju dodavanja novog elementa u listu birajte proizvoljan broj
puta te nakon toga kod odabira provjere upisanog elementa upisite OIB firme i ako je
element upisan ispisite odgovarajucu poruku, a ako nije pokrenite dodavanje tog elementa
u listu. Upisite OIB firme cije podatke zelite izbrisati i izbrisite podatke ako
postoje, a ako ne postoje ispisite odgovarajucu poruku. Zavrsetak rada ce biti
dealokacijom liste. */
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
struct ord
{
char naziv[30];
char vlasnik[30];
unsigned long int oib;
int usluga;
ord *sljedeci;
};
void unos(ord *glava)
{
ord *tr=glava;
ord *novi=new ord;
novi->sljedeci=NULL;
cout<<"Upisite naziv ordinacije:
";
cin.getline(novi->naziv, sizeof(novi->naziv));
cout<<"Upisite ime vlasnika:
";
cin.getline(novi->vlasnik, sizeof(novi->vlasnik));
cout<<"Upisite OIB ordinacije:
cin>>novi->oib;
cout<<"Upisite broj usluga:
cin>>novi->usluga;
cin.ignore();
cout<<endl;

";
";

while(tr->sljedeci)
tr=tr->sljedeci;
tr->sljedeci=novi;

}
void ispis(ord *glava)
{
ord *tr=glava->sljedeci;
while(tr)
{
cout<<"Naziv ordinacije:
"<<tr->naziv<<endl;
cout<<"Vlasnik:
"<<tr->vlasnik<<endl;
cout<<"OIB:
"<<tr->oib<<endl;
cout<<"Broj usluga:
"<<tr->usluga<<endl<<endl;

tr=tr->sljedeci;
}

void brisanje(ord *glava)


{
ord *pr=glava;
ord *tr=glava->sljedeci;
unsigned long int oib;
cout<<"Upisite oib ordinacije koju zelite izbrisati:
cin>>oib;
cout<<endl;

";

while(tr)
{
if(tr->oib==oib)
{
pr->sljedeci=tr->sljedeci;
delete tr;
return;
}

pr=pr->sljedeci;
tr=tr->sljedeci;

}
void pretraga(ord *glava)
{
ord *tr=glava->sljedeci;
unsigned long int oib;
int promjena=0;
cout<<"Upisite oib ordinacije koju zelite traziti:
cin>>oib;

";

while(tr)
{
if(tr->oib==oib)
{
cout<<"Ordinacija je upisana!"<<endl<<endl;
promjena=1;
}
}

tr=tr->sljedeci;

if(promjena==0)
{
cout<<"Ordinacija nije upisana, upis:"<<endl;
cin.ignore();
unos(glava);
}

ord *dealokacija(ord *glava)


{
ord *pr=glava;

ord *tr=glava->sljedeci;
while(tr)
{
delete pr;
pr=tr;
tr=tr->sljedeci;
}
delete pr;
return NULL;
}
void main()
{
int izbor;
ord *glava=new ord;
glava->sljedeci=NULL;
do
{

cout<<"1 - unos nove ordinacije"<<endl;


cout<<"2 - ispis liste ordinacija"<<endl;
cout<<"3 - brisanje ordinacije"<<endl;
cout<<"4 - pretraga ordinacija"<<endl;
cout<<"9 - izlaz iz programa"<<endl;
cout<<"Upisite svoj izbor:
";
cin>>izbor;
cin.ignore();
cout<<endl;
switch(izbor)
{
case 1:
{
unos(glava);
break;
}
case 2:
{
ispis(glava);
break;
}
case 3:
{
brisanje(glava);
break;
}
case 4:
{
pretraga(glava);
break;
}

}
}
while(izbor!=9);
glava=dealokacija(glava);

10

/* Z08 - Napisite program koji sadrzi klasu apartman ciji su clanovi


cijena najma ap. po danu i br. dana u mjesecu koliko je apartman bio
metoda unos za ucitavanje svih podataka i metoda zarada za racunanje
Zarade tog apartmana. Alocirajte din. polje od n objekata apartman i
ispisite ukupnu mjesecnu zaradu od svih apartmana. */

velicina ap.,
iznajmljen, te
i ispis ukupne mj.
izracunajte i

#include <iostream>
using namespace std;
class apartman
{
private:
int velicina;
float cijena_najma;
int broj_dana;
float ukupna;
public:
void unos();
float zarada();
};
void apartman::unos()
{
cout<<endl<<"Upisite velicinu apartmana:
cin>>velicina;
cout<<"Upisite cijenu najma po danu:
cin>>cijena_najma;

";

";

cout<<"Upisite broj dana u mjesecu koliko je apartman bio iznajmljen:


cin>>broj_dana;
}
float apartman::zarada()
{
ukupna = cijena_najma * broj_dana;
cout<<ukupna;
}

return ukupna;

11

";

kuca - godina izgradnje, izvodjac radova, upis(), ispis()


obiteljska kuca - vlasnik, adresa, upis, ispis
stambena zgrada - adresa, broj katova, broj stanova, upis, ispis
poslovna zgrada - naziv tvrtke, adresa, upis, ispis */
#include <iostream>
using namespace std;
//kuca
class kuca
{
private:
int godina_izgradnje;
char izvodjac[30];
public:
void upis();
void ispis();
};
void kuca::upis()
{
cout<<endl<<"Upisite godinu izgradnje:
cin>>godina_izgradnje;
cin.ignore();

";

cout<<"Upisite izvodjaca:
";
cin.getline(izvodjac, sizeof(izvodjac));

void kuca::ispis()
{
cout<<endl<<"Godina izgradnje:
"<<godina_izgradnje<<endl;
cout<<"Izvodjac:
"<<izvodjac<<endl;
}
//obiteljska kuca
class obiteljska_kuca : public kuca
{
private:
char vlasnik[30];
char adresa[50];
public:
void upis();
void ispis();
};
void obiteljska_kuca::upis()
{
kuca::upis();
cout<<"Upisite vlasnika:
";
cin.getline(vlasnik, sizeof(vlasnik));
cout<<"Upisite adresu:
";
cin.getline(adresa, sizeof(adresa));
}
void obiteljska_kuca::ispis()
{

12

kuca::ispis();

cout<<"Vlasnik:
cout<<"Adresa:

"<<vlasnik<<endl;
"<<adresa<<endl;

//stambena zgrada
class stambena_zgrada : public kuca
{
private:
char adresa[50];
int broj_katova;
int broj_stanova;
public:
void upis();
void ispis();
};
void stambena_zgrada::upis()
{
kuca::upis();
cout<<"Upisite adresu:
";
cin.getline(adresa, sizeof(adresa));
cout<<"Upisite broj katova:
cin>>broj_katova;

cout<<"Upisite broj stanova:


cin>>broj_stanova;
cin.ignore();

";
";

void stambena_zgrada::ispis()
{
kuca::ispis();
cout<<"Adresa:
"<<adresa<<endl;
cout<<"Broj katova:
"<<broj_katova<<endl;
cout<<"Broj stanova:
"<<broj_stanova<<endl;
}
//poslovna zgrada
class poslovna_zgrada : public kuca
{
private:
char naziv_tvrtke[30];
char adresa[50];
public:
void upis();
void ispis();
};
void poslovna_zgrada::upis()
{
kuca::upis();
cout<<"Upisite naziv tvrtke:
";
cin.getline(naziv_tvrtke, sizeof(naziv_tvrtke));

13

cout<<"Upisite adresu:
";
cin.getline(adresa, sizeof(adresa));
}
void poslovna_zgrada::ispis()
{
kuca::ispis();

cout<<"Naziv tvrtke:
"<<naziv_tvrtke<<endl;
cout<<"Adresa:
"<<adresa<<endl;
cout<<endl;

14

/* Z07 - Napisite program koji sadrzi f-ju za stvaranje slogovne datoteke koja sadrzi
slogove sa sljedecim komponentama: ime i prezime manekenke, OIB, visina, tezina,
indikator da/ne je li usla u finale ili ne, i ako je u finalu, upisati rang - prva
pratilja, druga pratilja ili miss. Napisite meni izbora koji ce sadrzavati unos slogova
u datoteku, ispis tih slogova i ispis odabranog sloga prema upisanom OIB-u i izlaz */
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
struct manekenka
{
char ime_prezime[30];
unsigned long int oib;
int visina;
int tezina;
bool finale;
char rang[20];
};
manekenka m;
void unos()
{
fstream d;
char finale;
d.open("D:\manekenka.ini", ios::out | ios::ate | ios::binary);
cout<<endl<<"Upisite ime i prezime manekenke:
";
cin.getline(m.ime_prezime, sizeof(m.ime_prezime));
cout<<"Upisite OIB:
";
cin>>m.oib;
cout<<"Upisite visinu:
";
cin>>m.visina;
cout<<"Upisite tezinu:
";
cin>>m.tezina;
cout<<"Je li manekenka usla u finale (d/n)?
";
cin>>finale;
cin.ignore();
if(finale == 'd')
{
m.finale = true;
cout<<"Upisite rang (prva pratilja, druga pratilja ili miss):
cin.getline(m.rang, sizeof(m.rang));
}
else
m.finale = false;
d.write((char *)&m, sizeof(m));
d.close();
}
void ispis()
{
fstream d;
d.open("D:\manekenka.ini", ios::in | ios::binary);

15

";

while(!d.eof())
{
d.read((char *)&m, sizeof(m));
if(d.eof()) break;
cout<<endl<<"Ime i prezime:
"<<m.ime_prezime<<endl;
cout<<"OIB:
"<<m.oib<<endl;
cout<<"Visina:
"<<m.visina<<endl;
cout<<"Tezina:
"<<m.tezina<<endl;
if(m.finale == true)
{
cout<<"Manekenka je usla u finale."<<endl;
cout<<"Rang:
"<<m.rang<<endl;
}
else
cout<<"Manekenka nije usla u finale."<<endl;
}
cout<<endl;
}

d.close();

void ispis_odabrane()
{
fstream d;
unsigned long int oib;
d.open("D:\manekenka.ini", ios::in | ios::binary);
cout<<endl<<"Upisite OIB manekenke cije podatke zelite ispisati:
cin>>oib;
cin.ignore();
while(!d.eof())
{
d.read((char *)&m, sizeof(m));
if(d.eof()) break;
if(m.oib == oib)
{
cout<<endl<<"Ime i prezime:
"<<m.ime_prezime<<endl;
cout<<"OIB:
"<<m.oib<<endl;
cout<<"Visina:
"<<m.visina<<endl;
cout<<"Tezina:
"<<m.tezina<<endl;
if(m.finale == true)
{
cout<<"Manekenka je usla u finale."<<endl;
cout<<"Rang:
"<<m.rang<<endl;
}
else
cout<<"Manekenka nije usla u finale."<<endl;
d.close();
}

return;

16

";

cout<<"Manekenka nije upisana.";


cout<<endl;
d.close();
}
void main()
{
int dalje;
do
{
cout<<endl<<"1 - Unos podataka"<<endl;
cout<<"2 - Ispis svih podataka"<<endl;
cout<<"3 - Ispis podataka o odabranoj manekenki"<<endl;
cout<<"9 - Izlaz iz programa"<<endl;
cout<<"Upisite svoj izbor:
";
cin>>dalje;
cin.ignore();
switch(dalje)
{
case 1:
{
unos();
break;
}
case 2:
{
ispis();
break;
}
case 3:
{
ispis_odabrane();
break;
}
}
}
while(dalje!=9);
cout<<endl<<endl;
}

17

/* Z08 - Napisite program koji sadrzi klasu apartman ciji su clanovi


cijena najma ap. po danu i br. dana u mjesecu koliko je apartman bio
metoda unos za ucitavanje svih podataka i metoda zarada za racunanje
Zarade tog apartmana. Alocirajte din. polje od n objekata apartman i
ispisite ukupnu mjesecnu zaradu od svih apartmana. */

velicina ap.,
iznajmljen, te
i ispis ukupne mj.
izracunajte i

#include "stdafx.h"
#include "apartman.h"
#include <iostream>
using namespace std;
void main()
{
int n;
float ukupna_zarada = 0;
cout<<"Upisite broj apartmana za koje zelite upisati podatke:
cin>>n;
apartman *polje = new apartman[n];
for(int i=0; i<n; i++)
{
polje[i].unos();
cout<<"Ukupna mjesecna zarada apartmana:
ukupna_zarada += polje[i].zarada();
}
cout<<endl<<"Ukupna zarada:

"<<ukupna_zarada;

delete []polje;
polje = NULL;
}

cout<<endl;

18

";

";

/* Z09
kuca - godina izgradnje, izvodjac radova, upis(), ispis()
obiteljska kuca - vlasnik, adresa, upis, ispis
stambena zgrada - adresa, broj katova, broj stanova, upis, ispis
poslovna zgrada - naziv tvrtke, adresa, upis, ispis */
#include "stdafx.h"
#include "kuca.h"
#include <iostream>
using namespace std;
void main()
{
kuca k;
obiteljska_kuca o;
stambena_zgrada s;
poslovna_zgrada p;
cout<<"Upis zgrade:
k.upis();

"<<endl;

cout<<endl<<"Upis obiteljske kuce:


o.upis();

"<<endl;

cout<<endl<<"Upis stambene zgrade:


s.upis();

"<<endl;

cout<<endl<<"Upis poslovne zgrade:


p.upis();

"<<endl;

cout<<endl;
k.ispis();
o.ispis();
s.ispis();
p.ispis();
}

cout<<endl;

19

/* Za ucitani broj stranaka i ucitani broj izbornih jedinica stvorite 2D polje izbori
(redak polja = broj saborskih mandata
za svaku stranku po izbornim jedinicama). Stvorite 1D polje ukupnog broja saborskih
mandata za svaku stranku i 1D polje prosjecnog broja
saborskih mandata po izbornim jedinicama. Ispisite dobivena polja. */
#include "stdafx.h"
#include <iostream>
#define M 50
#define N 25
using namespace std;
void main()
{
int br_str, br_izb_jed, izbori[M][N], uk_br_str[N]={0}, i, j;
float pr_jed[M]={0.0};
cout<<"Upisi broj stranaka:
";
cin>>br_str;
cout<<"Upisi broj izbornih jedinica:
cin>>br_izb_jed;
cout<<endl;

";

for(i=0; i<br_izb_jed; i++)


for(j=0; j<br_str; j++)
{
cout<<"Upisi broj saborskih mandata za "<<j+1<<". stranku za
"<<i+1<<". izbornu jedinicu: ";
cin>>izbori[i][j];
uk_br_str[j]+=izbori[i][j];
pr_jed[i]+=izbori[i][j];
}
cout<<endl;
for(i=0; i<br_izb_jed; i++)
{
for(j=0; j<br_str; j++)
cout<<izbori[i][j]<<"\t";
cout<<endl;
}
cout<<endl;
cout<<"Ukupni broj saborskih mandata za svaku stranku:"<<endl;
for(i=0; i<br_str; i++)
cout<<uk_br_str[i]<<"\t";
cout<<endl<<endl;

cout<<"Prosjecni broj saborskih mandata po izbornim jedinicama:"<<endl;


for(i=0; i<br_izb_jed; i++)
cout<<pr_jed[i]/br_str<<"\t";
cout<<endl<<endl<<endl;

20

/* U main f-ji ucitajte svoje ime, prezime i adresu stanovanja. U f-ji suma pronadjite
sumu
ASCII kodova upisanih podataka, te u f-ji pretvori pretvorite dobivenu sumu u sustav s
bazom 19.
Ispisite sumu i ekvivalent. */
#include "stdafx.h"
#include <iostream>
#define M 50
using namespace std;
int suma(char x[], char y[], char z[])
{
int i, s=0;
for(i=0; i<strlen(x); i++)
s+=x[i];
for(i=0; i<strlen(y); i++)
s+=y[i];
for(i=0; i<strlen(z); i++)
s+=z[i];
return s;
}
int pretvori(int x)
{
int ostatak, p;
if(x>18)
p=pretvori(x/19);
ostatak=x%19;
if(ostatak>9)
p=char(ostatak+55);
else
p=ostatak;
return p;
}
void main()
{
char ime[M], prezime[M], adresa[M];
int s, p;
cout<<"Upisite ime:
";
cin.getline(ime, M-1);
cout<<"Upisite prezime:
";
cin.getline(prezime, M-1);
cout<<"Upisite adresu:
";
cin.getline(adresa, M-1);
cout<<endl;
s=suma(ime,prezime,adresa);
p=pretvori(s);
cout<<"Suma ASCII kodova:
"<<s<<endl;
cout<<"U sustavu s bazom 19:
"<<p<<endl<<endl<<endl;
}

21

/* U main funkciji ucitajte naziv tvrtke i broj zaposlenih. Pronadjite u funkciji


suma_znakova
sumu ASCII kodova upisanog naziva tvrtke i u funkciji suma_znamenaka sumu znamenaka
broja zaposlenih.
Zbrojite dobivene sume i u f-ji pretvori pretvorite dobiveni zbroj u sustav s bazom 21.
Ispisite
dobivene sume i ekvivalent njihovog zbroja. */
#include "stdafx.h"
#include <iostream>
#define M 50
using namespace std;
int suma_znakova(char x[])
{
int s=0;
for(int i=0; i<strlen(x); i++)
s+=x[i];
return s;
}
int suma_znamenaka(int y)
{
if(y>0)
return suma_znamenaka(y/10)+(y%10);
else
return y%10;
}
int pretvori(int z)
{
int ostatak, p;
if(z>20)
pretvori(z/21);
ostatak=z%21;
if(ostatak>9)
p=char(ostatak+55);
else
p=ostatak;
return p;
}
void main()
{
char nt[M];
int bz, s1, s2, p;
cout<<"Upisite naziv tvrtke:
cin.getline(nt, M-1);
cout<<"Upisite broj zaposlenih:
cin>>bz;

";
";

s1=suma_znakova(nt);
s2=suma_znamenaka(bz);
p=pretvori(s1+s2);
cout<<endl<<"Suma znakova naziva:
"<<s1;
cout<<endl<<"Suma znamenaka broja zaposlenih:
cout<<endl<<"Suma sumi u sustavu s bazom 21:

22

"<<s2;
"<<p<<endl<<endl<<endl;

/* Za ucitani broj tiskara stvorite 2D polje mjesecnih tiraza novina za svaku tiskaru
(redak
polja = broj komada tiskanih novina po mjesecima jedne tiskare). Stvorite 1D polje
prosjecno
tiskanih novina za svaku tiskaru i 1D polje pr. tiskanih novina po mjesecima u svim
tiskarama.
Ispisite polja. */
#include "stdafx.h"
#include <iostream>
#define M 50
using namespace std;
void main()
{
int novine[M][12], brt, i, j;
float mjt[M]={0}, tmj[12]={0};
cout<<"Upisite broj tiskara:
cin>>brt;
cout<<endl;

";

for(i=0; i<brt; i++)


for(j=0; j<12; j++)
{
cout<<"Upisite tirazu tiskare "<<i+1<<" za "<<j+1<<". mjesec:
cin>>novine[i][j];
mjt[i]+=novine[i][j];
tmj[j]+=novine[i][j];
}
cout<<endl<<"Mjesecne tiraze po tiskarama:"<<endl;
for(i=0; i<brt; i++)
{
for(j=0; j<12; j++)
cout<<novine[i][j]<<'\t';
cout<<endl;
}
cout<<endl<<"Prosjecno tiskane novine za svaku tiskaru:"<<endl;
for(i=0; i<brt; i++)
cout<<mjt[i]/12<<'\t';
cout<<endl<<endl<<"Prosjecno tiskane novine po mjesecima:"<<endl;
for(i=0; i<12; i++)
cout<<tmj[i]/brt<<'\t';
cout<<endl<<endl<<endl;
}

23

";

/* U main f-ji ucitajte svoj JMBG i u f-ji suma pronadjite sumu njegovih znamenaka, a u
f-ji
pretvori pretvorite tu sumu u sustav s bazom 12. Ispisite sumu i njen ekvivalent. */
#include "stdafx.h"
#include <iostream>
#include <string>
#define M 15
using namespace std;
int suma(char x[])
{
int s=0;
for(int i=0; x[i]!='\0'; i++)
s+=x[i]-'0';
return s;
}
void pretvori(int x)
{
int ostatak;
if(x>11)
pretvori(x/12);
ostatak=x%12;
if(ostatak>9) cout<<char(ostatak+55);
else cout<<ostatak;
}
void main()
{
char jmbg[M];
int sum, ekv;
cout<<"Upisite JMBG:
";
cin.getline(jmbg, M-1);
cout<<endl;
sum=suma(jmbg);
cout<<"Suma znamenaka:

"<<sum<<endl<<endl;

cout<<"Ekvivalent sume u sustavu s bazom 12:


pretvori(sum);
cout<<endl<<endl<<endl;
}

24

";

/* Stvorite polje od n naziva banaka. Ucitajte naziv za koji zelite provjeriti nalazi li
se u polju.
Ako se nalazi ispisite "Banka je ucitana", a ako ne ispisite "Banke nema". Pronadjite
najdulji
naziv banke i kopirajte je u string najbanka. Pretvorite sva slova najbanke u velika
slova.
Stvorite 1D polje koje ce sadrzavati brojeve rijeci svakog naziva banke. Ispisite polja
i string najbanka. */
#include "stdafx.h"
#include <iostream>
#include <string>
#include <ctype.h>
#define M 50
using namespace std;
void main()
{
int n, i, j, naj=0, p, rijec[M]={0};
char banka[M][M], najbanka[M], provjera[M];
cout<<"Upisite broj naziva banaka:
cin>>n;
cin.ignore();
cout<<endl;

";

for(i=0; i<n; i++)


{
cout<<"Upisite naziv "<<i+1<<". banke:
cin.getline(banka[i], M-1);
if(naj<strlen(banka[i]))
{
strcpy(najbanka, banka[i]);
naj=strlen(banka[i]);
}
}

";

for(i=0; najbanka[i]!='\0'; i++)


najbanka[i]=toupper(najbanka[i]);
cout<<endl<<"Upisite naziv banke za provjeru:
cin.getline(provjera, M-1);
p=0;
for(i=0; i<n; i++)
if(strcmp(banka[i], provjera)==0)
{
p=1;
break;
}
if(p==1)
cout<<"Banka je ucitana."<<endl<<endl;
else
cout<<"Banke nema."<<endl<<endl;
for(i=0; i<n; i++)
{
for(j=0; banka[i][j]!='\0'; j++)
{
if(banka[i][j]==' ')
rijec[i]++;
}

25

";

rijec[i]++;
}
cout<<"Upisane banke:"<<endl;
for(i=0; i<n; i++)
cout<<"Banka "<<i+1<<":

"<<banka[i]<<endl;

cout<<endl<<"Brojevi rijeci u nazivu svake banke:"<<endl;


for(i=0; i<n; i++)
cout<<rijec[i]<<'\t';

cout<<endl<<endl<<"Banka s najduljim nazivom:

26

"<<najbanka<<endl<<endl<<endl;

/* Ponovo: Ucitajte svoj datum rodjenja u main f-ji. U f-ji max pronadjite najvecu
znamenku u
ucitanom datumu, te u f-ji potencija vrijednost potencije broja x ucitanog u main f-ji
s eksponentom najvece znamenke. Ispisite datum, znamenku i potenciju. */
#include "stdafx.h"
#include <iostream>
using namespace std;
int max(char x[])
{
int z=0;
for (int i=0; x[i]!='\0'; i++)
{
if(isdigit(x[i]))
if(x[i]-'0'>z)
z=x[i]-'0';
}
return z;
}
unsigned long potencija(int x, int y)
{
if(y==0)
return 1;
else
if(y==1)
return x;
else
return x*potencija(x,y-1);
}
void main()
{
char datum[12];
int znam, x;
unsigned long p;
cout<<"Upisite datum rodjenja u formatu DD/MM/GGGG:
cin.getline(datum, 11);
znam=max(datum);
cout<<"Upisite broj:
cin>>x;

";

p=potencija(x,znam);
cout<<"Datum rodjenja:
"<<datum<<endl;
cout<<"Najveca znamenka: "<<znam<<endl;
cout<<x<<" na "<<znam<<": "<<p<<endl<<endl<<endl;
}

27

";

/* Stvorite polje od n naziva ustanova. Pronadjite u polju najdulji naziv ustanove i


kopirajte ga u string USTANOVA. Pretvorite slova zadnje rijeci stringa USTANOVA u velika
slova. Stvorite jednodimenzionalno polje koje ce sadrzavati brojeve rijeci svih naziva
ustanova. Ispisite polje naziva ustanova, promijenjeni string USTANOVA i
jednodimenzionalno polje broja rijeci svih naziva ustanova. */
#include "stdafx.h"
#include <iostream>
#include <string>
#include <ctype.h>
#define M 50
using namespace std;
void main()
{
char naziv[M][M], ustanova[M];
int brust, i, duljina=0, razmak=0, rijec, pozicija, j, brrijeci[M];
cout<<"Upisite broj ustanova: ";
cin>>brust;
cin.ignore();
cout<<endl;
for(i=0; i<brust; i++)
{
cout<<"Upisite naziv "<<i+1<<". ustanove: ";
cin.getline(naziv[i], M-1);
if(strlen(naziv[i])>duljina)
{
strcpy(ustanova, naziv[i]);
duljina=strlen(naziv[i]);
}
}
cout<<endl;
for(i=0; ustanova[i]!='\0'; i++)
{
if(ustanova[i]==' ')
pozicija=i+1;
}
for(i=pozicija; ustanova[i]!='\0'; i++)
ustanova[i]=toupper(ustanova[i]);

for(i=0; i<brust; i++)


{
razmak=0;
for(j=0; naziv[i][j]!='\0'; j++)
if(naziv[i][j]==' ')
razmak++;
brrijeci[i]=razmak+1;
}
for(i=0; i<brust; i++)
cout<<"Naziv "<<i+1<<". ustanove: "<<naziv[i]<<endl;
cout<<endl<<"Ustanova s najduljim nazivom: "<<ustanova<<endl<<endl;
cout<<"Broj rijeci upisanih ustanova:"<<endl;
for(i=0; i<brust; i++)
cout<<brrijeci[i]<<'\t';
cout<<endl<<endl<<endl;

28

/* Stvorite polje od n naziva fakulteta. Ucitajte naziv fakulteta za koji zelite


provjeriti da li se nalazi u ucitanom polju i ako se nalazi ispisite poruku "Naziv je
prijavljen", a ako nije ispisite poruku "Naziva nema". Pronadjite u polju najdulji naziv
fakulteta i kopirajte ga u string fakultet. Prebrojite koliko rijeci ima naziv tog
fakulteta i svako prvo slovo u rijeci pretvorite u veliko slovo. Stvorite
jednodimenzionalno polje koje ce sadrzavati brojeve znakova svakog naziva fakulteta.
Ispisite polje naziva fakulteta, promijenjeni string fakultet i jednodimenzionalno polje
broja znakova svakog naziva fakulteta. */
#include "stdafx.h"
#include <iostream>
#include <string>
#include <ctype.h>
#define M 50
using namespace std;
void main()
{
int brfak, i, duljina=0, postoji, j, razmak=0, rijeci=0, pozicija=0, brznak=0,
znakfak[M];
char poljefak[M][M], fakultet[M], provjera[M];
cout<<"Upisi broj fakulteta:
cin>>brfak;
cin.ignore();
cout<<endl;

";

for(i=0; i<brfak; i++)


{
cout<<"Upisi naziv "<<i+1<<". fakulteta:
cin.getline(poljefak[i], M-1);
if(strlen(poljefak[i])>duljina)
{
strcpy(fakultet, poljefak[i]);
duljina=strlen(poljefak[i]);
}
}

";

for(i=0; fakultet[i]!=0; i++)


{
if(fakultet[i]==' ') razmak++;
}
if(isalpha(fakultet[0])) fakultet[0]=toupper(fakultet[0]);
for(i=0; fakultet[i]!='\0'; i++)
if(fakultet[i]==' ')
{
fakultet[i+1]=toupper(fakultet[i+1]);
}
cout<<endl;
cout<<"Upisite naziv fakulteta za provjeru:
cin.getline(provjera, M-1);
postoji=0;
for(i=0; i<brfak; i++)
if(strcmp(poljefak[i], provjera)==0)
{
postoji=1;
break;
}

29

";

if(postoji==1)
cout<<"Naziv je prijavljen."<<endl<<endl;
else
cout<<"Naziva nema."<<endl<<endl;
for(i=0; i<brfak; i++)
znakfak[i]=strlen(poljefak[i]);
for(i=0; i<brfak; i++)
cout<<"Naziv "<<i+1<<". fakulteta:

"<<poljefak[i]<<endl;

cout<<endl<<"Duljina naziva upisanih fakulteta:


for(i=0; i<brfak; i++)
cout<<znakfak[i]<<'\t';

"<<endl;

cout<<endl<<endl;
cout<<"Fakultet s najduljim nazivom:
"<<fakultet<<endl;
cout<<"Broj rijeci u nazivu tog fakulteta:
"<<razmak+1<<endl<<endl<<endl;
}

30

/* Napisite program koji u funkciji stvara dinamicki niz A s n rezultata skijasica


slaloma.
U funkciji sortiraj sortirajte padajuci niz A. U funkciji razlika upisite u dinamicki
niz R razliku
vremena svake skijasice u odnosu na vrijeme najbolje skijasice. Ispisite nizove A i R.
*/
#include "stdafx.h"
#include <iostream>
using namespace std;
void ucitaj(float *niz, int x)
{
for(int i=0; i<x; i++)
{
cout<<"Upisi rezultat "<<i+1<<". skijasice:
cin>>*(niz+i);
}
}
void sortiraj(float *niz, int x)
{
for(int i=0; i<x; i++)
for(int j=i+1; j<x; j++)
if(*(niz+i)>*(niz+j))
{
float temp=*(niz+i);
*(niz+i)=*(niz+j);
*(niz+j)=temp;
}
}
void razlika(float *niz1, float *niz2, int x)
{
for(int i=0; i<x; i++)
*(niz2+i)=*(niz1+i)-*(niz1);
}
void ispisi(float *niz, int x)
{
cout<<endl;
for(int i=0; i<x; i++)
cout<<*(niz+i)<<'\t';
cout<<endl;
}
void main()
{
int n;
cout<<"Upisite broj skijasica:
cin>>n;

";

float *A=new float[n];


float *R=new float[n];

cout<<endl;
ucitaj(A,n);
sortiraj(A,n);
razlika(A,R,n);
ispisi(A,n);
ispisi(R,n);
cout<<endl<<endl;

31

";

/* Napisite program koji u funkciji stvara dinamicki niz A s n rezultata skijasica


slaloma u prvoj
voznji i dinamicki niz B s n rezultata druge voznje. U funkciji zbroji stvorite
dinamicki niz C
koji ce sadrzavati zbrojeve rezultata prve i druge voznje te u funkciji sortiraj
sortirajte
uzlazno niz C. Ispisite nizove A, B i C. */
#include "stdafx.h"
#include <iostream>
using namespace std;
void stvori(float *x, int n)
{
static int b=1;
for(int i=0; i<n; i++)
{
cout<<"Upisi rezultat "<<i+1<<". skijasice u "<<b<<". voznji:
cin>>*(x+i);
}
b++;
cout<<endl;
}
void zbroji(float *x, float *y, float *z, int n)
{
for(int i=0; i<n; i++)
*(z+i)=*(x+i)+*(y+i);
}
void sortiraj(float *x, int n)
{
for(int i=0; i<n; i++)
for(int j=i; j<n; j++)
if(*(x+i)>*(x+j))
{
float temp=*(x+i);
*(x+i)=*(x+j);
*(x+j)=temp;
}
}
void ispis(float *x, int n)
{
for(int i=0; i<n; i++)
cout<<*(x+i)<<'\t';
cout<<endl;
}
void main()
{
int n;
cout<<"Upisite broj skijasica:
cin>>n;

";

float *A=new float [n];


float *B=new float [n];
float *C=new float [n];
cout<<endl;

32

";

stvori(A,n);
stvori(B,n);
zbroji(A,B,C,n);
sortiraj(C,n);
cout<<"Rezultati u prvoj voznji:"<<endl;
ispis(A,n);
cout<<endl<<"Rezultati u drugoj voznji:"<<endl;
ispis(B,n);
cout<<endl<<"Ukupni rezultati:"<<endl;
ispis(C,n);
cout<<endl<<endl;
}

33

/* Stvorite polje od n naziva ustanova. Pronadjite u polju najdulji naziv ustanove


i kopirajte ga u string USTANOVA. Pretvorite slova zadnje rijeci stringa USTANOVA
u velika slova. Stvorite jednodimenzionalno polje koje ce sadrzavati brojeve rijeci svih
naziva
ustanova. Ispisite polje naziva ustanova, promijenjeni string USTANOVA i
jednodimenzionalno polje
broja rijeci svih naziva ustanova. */
#include "stdafx.h"
#include <iostream>
#include <string>
#include <ctype.h>
#define M 50
using namespace std;
void main()
{
char naziv[M][M], ustanova[M];
int brust, i, duljina=0, razmak=0, rijec, pozicija, j, brrijeci[M];
cout<<"Upisite broj ustanova: ";
cin>>brust;
cin.ignore();
cout<<endl;
for(i=0; i<brust; i++)
{
cout<<"Upisite naziv "<<i+1<<". ustanove: ";
cin.getline(naziv[i], M-1);
if(strlen(naziv[i])>duljina)
{
strcpy(ustanova, naziv[i]);
duljina=strlen(naziv[i]);
}
}
cout<<endl;
for(i=0; ustanova[i]!='\0'; i++)
{
if(ustanova[i]==' ')
razmak++;
}
for(i=0; rijec!=razmak; i++)
if(ustanova[i]==' ')
{
rijec++;
pozicija=i;
}
for(i=pozicija; ustanova[i]!='\0'; i++)
ustanova[i]=toupper(ustanova[i]);
for(i=0; i<brust; i++)
{
razmak=0;
for(j=0; naziv[i][j]!='\0'; j++)
if(naziv[i][j]==' ')
razmak++;
brrijeci[i]=razmak+1;

34

}
for(i=0; i<brust; i++)
cout<<"Naziv "<<i+1<<". ustanove: "<<naziv[i]<<endl;
cout<<endl<<"Ustanova s najduljim nazivom: "<<ustanova<<endl<<endl;
cout<<"Broj rijeci upisanih ustanova:"<<endl;
for(i=0; i<brust; i++)
cout<<brrijeci[i]<<'\t';
}

cout<<endl<<endl<<endl;

35

* Napisite program koji u funkciji stvara dinamicki niz A u koji se za n studenata unose
brojevi
bodova na ispitu iz Programiranja. U funkciji sortiraj sortirajte padajuci niz A. U
funkciji
pozitivni upisite u dinamicki niz P sve brojeve bodova iz niza A koji su veci od
prosjecnog broja bodova.
Ispisite nizove A i P. */
#include "stdafx.h"
#include <iostream>
using namespace std;
float upisi(float *A, int n)
{
float prosjek=0;
for(int i=0; i<n; i++)
{
cout<<"Upisite broj bodova "<<i+1<<". studenta:
cin>>*(A+i);
prosjek+=*(A+i);
}
prosjek/=n;
return prosjek;
}
void sortiraj(float *A, int n)
{
for(int i=0; i<n; i++)
for(int j=i; j<n; j++)
if(*(A+i)<*(A+j))
{
float temp=*(A+i);
*(A+i)=*(A+j);
*(A+j)=temp;
}
}
int broj_clanova(float *A, int n, float prosjek)
{
int br=0;
for(int i=0; i<n; i++)
if(*(A+i)>prosjek)
br++;
}

return br;

void pozitivni(float *P, float *A, int n, float prosjek)


{
int j=0;

for(int i=0; i<n; i++)


if(*(A+i)>prosjek)
{
*(P+j)=*(A+i);
j++;
}

void ispis(float *A, int n)

36

";

{
cout<<endl;
for(int i=0; i<n; i++)
cout<<*(A+i)<<'\t';
cout<<endl;
}
void main()
{
int n, m;
float prosjek;
cout<<"Upisite broj studenata:
cin>>n;
cout<<endl;

";

float *A=new float[n];


prosjek=upisi(A,n);
sortiraj(A,n);
m=broj_clanova(A,n,prosjek);
float *P=new float[m];
pozitivni(P,A,n,prosjek);
ispis(A,n);
ispis(P,m);
cout<<endl<<endl;
}

37

/* Napisite program u kojem se stvara 2D dinamicko polje zadatak u koje se za ucitani


broj studenata
unose postoci ocjene tocno rijesenih zadataka iz Programiranja. Izracunajte za svakog
studenta srednji
postotak ocjene i upisite ga kao zadnji podatak u njegovom redu. Ispisite polje zadatak.
*/
#include "stdafx.h"
#include <iostream>
using namespace std;
void stvori(float **x, int n)
{
int m;
for(int i=0; i<n; i++)
{
cout<<"Upisite broj zadataka "<<i+1<<". studenta:
cin>>m;
x[i]=new float[m+2];
x[i][0]=float(m);
}
}

";

cout<<endl;

void unesi(float **x, int n)


{
int i, j;
for(i=0; i<n; i++)
{
float suma=0;
for(j=1; j<=x[i][0]; j++)
{
cout<<"Unesite "<<j<<". postotak "<<i+1<<". studenta:
cin>>x[i][j];
suma+=x[i][j];
}

";

x[i][j]=suma/x[i][0];
}

cout<<endl;

}
void ispisi(float **x, int n)
{
int i, j;
cout<<"Postoci ocjene tocno rijesenih zadataka i srednji postotak ocjene za svakog
studenta:"<<endl<<endl;
for(i=0; i<n; i++)
{
for(j=0; j<=x[i][0]+1; j++)
cout<<x[i][j]<<'\t';
}

cout<<endl;

38

cout<<endl;

void dealociraj(float **x, int n)


{
for(int i=0; i<n; i++)
delete []x[i];
delete[]x;
x=NULL;
}
void main()
{
int n;
cout<<"Upisite broj studenata:
cin>>n;
cout<<endl;

";

float **zadatak=new float*[n];


stvori(zadatak,n);
unesi(zadatak,n);
ispisi(zadatak,n);
dealociraj(zadatak,n);
cout<<endl<<endl;
}

39

/* Napisite program u kojem se stvara 2D dinamicko polje zadatak u koje se za ucitani


broj studenata
unose ocjene iz zadataka koji su pozitivno ocijenjeni. Izracunajte za svakog studenta
prosjecnu
ocjenu iz pisanih zadataka i upisite je kao zadnji podatak u njegovom redu. Ispisite
polje zadatak. Kao
prvi element polja ispisuje se broj koji oznacava koliko mjesta sadrzi cijelo polje, a
zadnji element
u polju je prosjek. Oba su pri ispisu odvojena crticom. */
#include "stdafx.h"
#include <iostream>
using namespace std;
void stvori(float **zadatak, int n)
{
int m;
for(int i=0; i<n; i++)
{
cout<<"Upisite broj pozitivno ocijenjenih zadataka za "<<i+1<<". studenta:
";

cin>>m;

zadatak[i]=new float[m+2];
zadatak[i][0]=float(m+2);

cout<<endl;
}
void upisi(float **zadatak, int n)
{
int i, j;
for(i=0; i<n; i++)
{
float prosjek=0;
for(j=1; j<zadatak[i][0]-1; j++)
{
cout<<"Upisite ocjenu "<<j<<". zadatka "<<i+1<<". studenta:
cin>>zadatak[i][j];
prosjek+=zadatak[i][j];
}
zadatak[i][j]=prosjek/(zadatak[i][0]-2);
cout<<endl;
}

void ispisi(float **zadatak, int n)


{
int i, j;
for(i=0; i<n; i++)
{
cout<<zadatak[i][0]<<" |\t";
for(j=1; j<zadatak[i][0]-1; j++)

40

";

cout<<zadatak[i][j]<<'\t';
cout<<"| "<<zadatak[i][j]<<endl;
}
}

cout<<endl;

void main()
{
int n;
cout<<"Upisite broj studenata:
cin>>n;
cout<<endl;

";

float **zadatak=new float*[n];


stvori(zadatak,n);
upisi(zadatak,n);
cout<<"Ocjene pozitivno ocijenjenih zadataka i prosjecna ocjena za svakog
studenta:"<<endl;
ispisi(zadatak,n);
cout<<endl;
}

41

/* Stvorite jednostavnu vezanu listu s podacima o proizvodima (naziv, sifra, kolicina).


Napisite sljedece funkcije:
1) za dodavanje novog elementa u listu
2) za ispis elemenata
3) za brisanje elementa liste.
U main funkciji nakon stvorene liste pozovite funkciju za dodavanje 3 elementa u listu,
pa
funkciju za ispis liste i izbrisite odabrani element liste. Ispisite ponovno listu,
dealocirajte
listu. */
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
struct proizvod
{
char naziv[30];
int sifra;
int kolicina;
proizvod *sljedeci;
};
void unos(proizvod *x)
{
while(x->sljedeci)
x=x->sljedeci;
x->sljedeci=new proizvod;
x=x->sljedeci;
cout<<"Naziv proizvoda:
";
cin.ignore();
cin.getline(x->naziv, 30);
cout<<"Sifra proizvoda:
cin>>x->sifra;
cout<<"Kolicina:
cin>>x->kolicina;

";

";

x->sljedeci=NULL;
}
void ispis(proizvod *x)
{
x=x->sljedeci;
while(x->sljedeci)
{
cout<<"Naziv proizvoda:
"<<x->naziv<<endl;
cout<<"Sifra:
"<<x->sifra<<endl;
cout<<"Kolicina:
"<<x->kolicina<<endl<<endl;
x=x->sljedeci;
}
cout<<"Naziv proizvoda:
"<<x->naziv<<endl;
cout<<"Sifra:
"<<x->sifra<<endl;
cout<<"Kolicina:
"<<x->kolicina<<endl<<endl;
}
void brisi(proizvod *x)
{

42

proizvod *prethodni;
int sifra;
cout<<"Upisite sifru proizvoda koji zelite obrisati:
cin>>sifra;
cout<<endl;
prethodni=x;
x=x->sljedeci;
while(x->sljedeci)
{
if(sifra==x->sifra)
{
proizvod *temp=prethodni->sljedeci;
prethodni->sljedeci=x->sljedeci;
delete temp;
x=prethodni->sljedeci;
break;
}
prethodni=prethodni->sljedeci;
x=prethodni->sljedeci;
}
if(sifra==x->sifra)
{
proizvod *temp=prethodni->sljedeci;
prethodni->sljedeci=x->sljedeci;
delete temp;
}
}
proizvod *dealociraj(proizvod *x)
{
proizvod *temp;
while(x->sljedeci)
{
temp=x;
x=x->sljedeci;
delete temp;
}
delete x;
x=NULL;
return x;
}
void main()
{
proizvod *lista=new proizvod;
lista->sljedeci=NULL;
for(int i=0; i<3; i++)
{
unos(lista);
cout<<endl;
}
cout<<endl<<endl;
ispis(lista);
cout<<endl<<endl;
brisi(lista);
ispis(lista);
}

lista=dealociraj(lista);

43

";

/* Stvorite jednostavnu vezanu listu s podacima o studentima. Ponuditi korisniku


izbornik s osnovnim
operacijama:
- dodavanje novog elementa u listu
- ispis sadrzaja liste
- brisanje elemenata liste
- dealokacija liste
- izlaz iz programa */
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
struct student
{
int mat_br;
char ime_prez[30];
int god_upisa;
student *sljedeci;
};
void dodaj(student *glava)
{
student *tr=glava;
student *novi=new student;
novi->sljedeci=NULL;
cout<<"Maticni broj studenta:
";
cin>>novi->mat_br;
cout<<"Ime i prezime:
";
cin.ignore();
cin.getline(novi->ime_prez, sizeof(novi->ime_prez));
cout<<"Godina upisa:
";
cin>>novi->god_upisa;
cout<<endl;
while(tr->sljedeci) tr=tr->sljedeci;
}

tr->sljedeci=novi;

void ispisi(student *glava)


{
student *tr=glava->sljedeci;
while(tr)
{
cout<<"Maticni broj studenta:
"<<tr->mat_br<<endl;
cout<<"Ime i prezime:
"<<tr->ime_prez<<endl;
cout<<"Godina upisa:
"<<tr->god_upisa<<endl<<endl;
tr=tr->sljedeci;
}
}
void brisi(student *glava)
{
int mbr;
student *pr=glava;
student *tr=glava->sljedeci;

44

cout<<"Upisite maticni broj studenta kojeg zelite izbrisati:


cin>>mbr;
cout<<endl;
while(tr)
{
if(tr->mat_br == mbr)
{
pr->sljedeci=tr->sljedeci;
delete tr;
return;
}
pr=tr;
tr=tr->sljedeci;
}
}
student *dealociraj(student *glava)
{
student *pr=glava;
student *tr=glava->sljedeci;
while(tr)
{
delete pr;
pr=tr;
tr=tr->sljedeci;
}

delete pr;
return NULL;

void main()
{
int izbor;
student *glava=new student;
glava->sljedeci=NULL;
do
{
cout<<"IZBORNIK:"<<endl<<endl;
cout<<"1 - upis podataka o novom studentu"<<endl;
cout<<"2 - ispis svih elemenata"<<endl;
cout<<"3 - brisanje zeljenog elementa"<<endl;
cout<<"9 - izlaz"<<endl;
cout<<"Upisite svoj izbor:
";
cin>>izbor;
cout<<endl;
switch(izbor)
{
case 1:
{
dodaj(glava);
break;
}
case 2:
{
ispisi(glava);

45

";

break;
}
case 3:
{
brisi(glava);
break;
}
}
}
while(izbor!=9);
}

glava=dealociraj(glava);

46

/* Za svakog od n skijasa upisi prvo i drugo prolazno vrijeme u polja A i B. U polju C


nadji
zbroj tih vremena, sortiraj polje uzlazno i ispisi ga. Program treba sadrzavati funkcije
za:
- kreiranje polja
- upis elemenata
- zbrajanje elemenata i pridruzivanje zbroja polju C
- sortiranje
- ispis. */
#include "stdafx.h"
#include <iostream>
using namespace std;
float *stvori(float *x, int n)
{
x=new float[n];
return x;
}
void upisi(float *x, int n)
{
static int br=1;
for(int i=0; i<n; i++)
{
cout<<"Upisi "<<br<<". prolazno vrijeme "<<i+1<<". skijasa:
cin>>*(x+i);
}
cout<<endl;
br++;
}
float *zbroji(float *x, float *y, float *z, int n)
{
z=new float[n];
for(int i=0; i<n; i++)
*(z+i)=*(x+i)+*(y+i);
return z;
}
void sortiraj(float *x, int n)
{
int i, j;
for(i=0; i<n; i++)
for(j=i+1; j<n; j++)
if(*(x+i)>*(x+j))
{
float temp=*(x+i);
*(x+i)=*(x+j);
*(x+j)=temp;
}
}
void ispisi(float *x, int n)
{

47

";

for(int i=0; i<n; i++)


cout<<*(x+i)<<'\t';
cout<<endl;
}
void main()
{
int n;
cout<<"Upisi broj skijasa:
cin>>n;
cout<<endl;

";

float *A;
float *B;
float *C;
A=stvori(A,n);
B=stvori(B,n);
upisi(A,n);
upisi(B,n);
C=zbroji(A,B,C,n);
sortiraj(C,n);
ispisi(C,n);
}

cout<<endl<<endl;

48

/* Napisite program u kojem se stvara 2D dinamicko polje KTT u koje se za ucitani broj
studenata
unose samo bodovi tocno rijesenih zadataka iz kratkih teorijskih testova. Izracunajte za
svakog
studenta zbroj bodova i upisite ga kao zadnji podatak u njegovom redu. Ispisite polje
KTT. */
#include "stdafx.h"
#include <iostream>
using namespace std;
void stvori(float **x, int n)
{
int i, br;
for(i=0; i<n; i++)
{
cout<<"Upisite broj tocno rijesenih zadataka "<<i+1<<". studenta:
cin>>br;
x[i]=new float[br+2];
x[i][0]=float(br);
}
}

";

cout<<endl;

void upisi(float **x, int n)


{
int i, j;
for(i=0; i<n; i++)
{
float suma=0;
for(j=1; j<=x[i][0]; j++)
{
cout<<"Upisite bodove za "<<j<<". zadatak "<<i+1<<". studenta:
cin>>x[i][j];
suma+=x[i][j];
}
x[i][j]=suma;
}

cout<<endl;

}
void ispisi(float **x, int n)
{
int i, j;
for(i=0; i<n; i++)
{
for(j=0; j<=x[i][0]+1; j++)
cout<<x[i][j]<<'\t';
cout<<endl;
}
cout<<endl<<endl;

49

";

}
void dealokacija(float **x, int n)
{
int i;
for(i=0; i<n; i++)
delete []x[i];

delete []x;
x=NULL;

void main()
{
int n;
cout<<"Upisite broj studenata:
cin>>n;
cout<<endl;

";

float **ktt=new float*[n];


stvori(ktt,n);
upisi(ktt,n);
ispisi(ktt,n);
dealokacija(ktt,n);
}

50

/* Stvaranje vezane liste s dodavanjem elemenata, sortiranjem, ispisom,


brisanjem elemenata iz liste, te dealokacijom liste. Upisuju se elementi
za proizvod, i to sifra proizvoda, naziv i kolicina. Potrebno je napisati
funkcije za dodavanje, pretrazivanje, sortiranje, ispis, brisanje i
dealokaciju. Unos polja se ne dozvoljava ako sifra vec postoji. */
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
struct proizvod
{
int sifra;
char naziv[20];
int kolicina;
proizvod *sljedeci;
};
proizvod * trazi(proizvod *glava, int sifra)
{
proizvod *pretraga=NULL;
proizvod *tr=glava->sljedeci;
while(tr)
{
if(tr->sifra==sifra)
pretraga=tr;
tr=tr->sljedeci;
}
return pretraga;
}
void upisi(proizvod *glava)
{
int sifra;
proizvod *tr=glava;
proizvod *novi=new proizvod;
novi->sljedeci=NULL;
cout<<"Upisite sifru proizvoda:
cin>>sifra;

";

proizvod *provjera=trazi(glava,sifra);
if(provjera==NULL)
{
novi->sifra=sifra;
cout<<"Upisite naziv proizvoda:
";
cin.ignore();
cin.getline(novi->naziv, sizeof(novi->naziv));
cout<<"Upisite kolicinu proizvoda:
cin>>novi->kolicina;
while(tr->sljedeci)
tr=tr->sljedeci;

51

";

}
else

tr->sljedeci=novi;
cout<<"Vec postoji proizvod s tom sifrom!"<<endl;

cout<<endl;
}
void ispisi(proizvod *glava)
{
proizvod *tr=glava->sljedeci;
cout<<"ISPIS PROIZVODA:"<<endl;
while(tr)
{
cout<<"Sifra:
"<<tr->sifra<<endl;
cout<<"Naziv:
"<<tr->naziv<<endl;
cout<<"Kolicina:
"<<tr->kolicina<<endl<<endl;
}

tr=tr->sljedeci;

}
void sortiraj(proizvod *glava)
{
int promjena;
proizvod *pr, *tr, *sl;
do
{

promjena=0;
tr=glava->sljedeci;
pr=glava;
while(tr->sljedeci)
{
sl=tr->sljedeci;
if(tr->sifra > sl->sifra)
{
pr->sljedeci=sl;
tr->sljedeci=sl->sljedeci;
sl->sljedeci=tr;
promjena=1;
break;
}
pr=tr;
tr=tr->sljedeci;

}
}
while(promjena==1);

void brisi(proizvod *glava)


{
proizvod *pr=glava;
proizvod *tr=glava->sljedeci;

52

int sifra;
cout<<"BRISANJE:"<<endl;
cout<<"Upisite sifru proizvoda kojeg zelite izbrisati:
cin>>sifra;
cout<<endl;
while(tr)
{
if(tr->sifra==sifra)
{
pr->sljedeci=tr->sljedeci;
delete tr;
return;
}
pr=tr;
tr=tr->sljedeci;
}

proizvod * dealociraj(proizvod *glava)


{
proizvod *pr=glava;
proizvod *tr=glava->sljedeci;
while(tr)
{
delete pr;
pr=tr;
tr=tr->sljedeci;
}
delete pr;
return NULL;
}
void main()
{
int izbor;
int sifra;
proizvod *glava=new proizvod;
glava->sljedeci=NULL;
proizvod *pretraga=NULL;
do
{
cout<<"IZBORNIK:"<<endl;
cout<<"1 - upis proizvoda"<<endl;
cout<<"2 - ispis proizvoda"<<endl;
cout<<"3 - sortiranje proizvoda"<<endl;
cout<<"4 - pretraga proizvoda"<<endl;
cout<<"5 - brisanje odabranog proizvoda"<<endl;
cout<<"6 - dealokacija liste"<<endl;
cout<<"9 - izlaz iz programa"<<endl;
cout<<"Upisite svoj izbor:
";
cin>>izbor;
cout<<endl;

53

";

switch(izbor)
{
case 1:
{
upisi(glava);
break;
}
case 2:
{
ispisi(glava);
break;
}
case 3:
{
sortiraj(glava);
break;
}
case 4:
{
cout<<"PRETRAGA:"<<endl;
cout<<"Upisite sifru proizvoda:
";
cin>>sifra;
pretraga=trazi(glava,sifra);
if(pretraga==NULL)
cout<<"Proizvod nije pronadjen!"<<endl<<endl;
else
{
cout<<"Naziv:
"<<pretraga->naziv<<endl;
cout<<"Kolicina:
"<<pretraga->kolicina<<endl<<endl;
}
break;
}
case 5:
{
brisi(glava);
break;
}
case 6:
{
glava=dealociraj(glava);
break;
}

}
}
while(izbor!=9);

cout<<endl<<endl;
}

54

/* Napisite program koji u


upisuju godisnje zarade. U
zarada upisite u dinamicki
prosjecne godisnje zarade.

funkciji stvara dinamicki niz G u koji se za n zaposlenika


funkciji sortiraj sortirajte rastuci niz G, a u funkciji
niz Z sve godisnje zarade iz niza G koje su vece od
Ispisite nizove G i Z. */

#include "stdafx.h"
#include <iostream>
using namespace std;
float upisi(float *x, int n)
{
int i;
float prosjek=0;
for(i=0; i<n; i++)
{
cout<<"Upisite godisnju zaradu "<<i+1<<". zaposlenika:
cin>>*(x+i);
prosjek+=*(x+i);
}
prosjek/=n;
cout<<endl;
return prosjek;
}
void sortiraj(float *x, int n)
{
int i, j;
for(i=0; i<n; i++)
for(j=i+1; j<n; j++)
if(*(x+i)>*(x+j))
{
float temp=*(x+i);
*(x+i)=*(x+j);
*(x+j)=temp;
}
}
int vecih(float *x, int n, float prosjek)
{
int i, br=0;
for(i=0; i<n; i++)
if(*(x+i)>prosjek)
br++;
return br;
}
void zarada(float *x, int n, float *y, float prosjek)
{
int i, j=0;
for(i=0; i<n; i++)
if(*(x+i)>prosjek)
{
*(y+j)=*(x+i);
j++;

55

";

}
}
void ispisi(float *x, int n)
{
int i;
for(i=0; i<n; i++)
cout<<*(x+i)<<'\t';
cout<<endl;
}
void main()
{
int n, brz;
float prosjek;
cout<<"Upisite broj zaposlenika:
cin>>n;
cout<<endl;

";

float *G=new float[n];


prosjek=upisi(G,n);
sortiraj(G,n);
brz=vecih(G,n,prosjek);
float *Z=new float[brz];
zarada(G,n,Z,prosjek);
ispisi(G,n);
ispisi(Z,brz);
delete []G;
G=NULL;
delete []Z;
Z=NULL;
cout<<endl<<endl;
}

56

/* Napisite program u kojem se stvara 2D dinamicko polje SKOLA u koje se za m gradova


unosi kao prvi
podatak broj skola toga grada. Za svaku skolu unesite broj ucenika. Izracunajte za svaki
grad i svaku
skolu ukupan broj ucenika i izracunajte prosjecan broj ucenika u skolama u tom gradu.
Upisite ih kao
zadnja dva podatka u njegovom redu. Ispisite polje SKOLA. */
#include "stdafx.h"
#include <iostream>
using namespace std;
void stvori(float **x, int n)
{
int i, br;
for(i=0; i<n; i++)
{
cout<<"Upisite broj skola "<<i+1<<". grada:
cin>>br;

";

x[i]=new float[br+3];
}

x[i][0]=float(br);

cout<<endl;
}
void upis(float **x, int n)
{
int i, j;
float zbroj;
for(i=0; i<n; i++)
{
zbroj=0;
for(j=1; j<=x[i][0]; j++)
{
cout<<"Upisite broj ucenika "<<j<<". skole "<<i+1<<". grada:
cin>>x[i][j];
}

zbroj+=x[i][j];

x[i][j]=zbroj;
x[i][j+1]=zbroj/x[i][0];
}

cout<<endl;

}
void ispis(float **x, int n)
{
int i, j;
for(i=0; i<n; i++)
{
for(j=0; j<x[i][0]+3; j++)
cout<<x[i][j]<<'\t';

57

";

cout<<endl;
}

void dealociraj(float **x, int n)


{
int i;
for(i=0; i<n; i++)
delete []x[i];
delete []x;
x=NULL;
}
void main()
{
int m;
cout<<"Upisite broj gradova:
cin>>m;
cout<<endl;

";

float **skola=new float*[m];


stvori(skola,m);
upis(skola,m);
ispis(skola,m);
dealociraj(skola,m);
}

cout<<endl<<endl;

58

/* Stvorite polje od n naziva fakulteta. Ucitajte naziv fakulteta za koji zelite


provjeriti da li
se nalazi u ucitanom polju i ako se nalazi ispisite poruku "Naziv je prijavljen", a ako
nije
ispisite poruku "Naziva nema". Pronadjite u polju najdulji naziv fakulteta i kopirajte
ga u
string fakultet. Prebrojite koliko rijeci ima naziv tog fakulteta i svako prvo slovo u
rijeci
pretvorite u veliko slovo. Stvorite jednodimenzionalno polje koje ce sadrzavati brojeve
znakova svakog
naziva fakulteta. Ispisite polje naziva fakulteta, promijenjeni string fakultet i
jednodimenzionalno
polje broja znakova svakog naziva fakulteta. */
#include "stdafx.h"
#include <iostream>
#include <string>
#include <ctype.h>
#define M 50
using namespace std;
void main()
{
int brfak, i, duljina, postoji, j, razmak=0, rijeci=0, pozicija=0, brznak=0,
znakfak[M];
char poljefak[M][M], fakultet[M], provjera[M];
cout<<"Upisi broj fakulteta:
cin>>brfak;
cin.ignore();
cout<<endl;

";

for(i=0; i<brfak; i++)


{
duljina=0;
cout<<"Upisi naziv "<<i+1<<". fakulteta:
cin.getline(poljefak[i], M-1);
if(strlen(poljefak[i])>duljina)
{
strcpy(fakultet, poljefak[i]);
duljina=strlen(poljefak[i]);
}
}

";

for(i=0; fakultet[i]!='\0'; i++)


if(fakultet[i]==' ')
razmak++;
for(i=0; rijeci<=razmak; i++)
{
for(j=pozicija; fakultet[j]!=' '; j++)
brznak++;
fakultet[pozicija]=toupper(fakultet[pozicija]);
pozicija=brznak+1;
rijeci++;
}
cout<<endl;
cout<<"Upisite naziv fakulteta za provjeru:
cin.getline(provjera, M-1);
postoji=0;

59

";

for(i=0; i<brfak; i++)


if(strcmp(poljefak[i], provjera)==0)
{
postoji=1;
break;
}
if(postoji==1)
cout<<"Naziv je prijavljen."<<endl<<endl;
else
cout<<"Naziva nema."<<endl<<endl;
for(i=0; i<brfak; i++)
znakfak[i]=strlen(poljefak[i]);
for(i=0; i<brfak; i++)
cout<<"Naziv "<<i+1<<". fakulteta:

"<<poljefak[i]<<endl;

cout<<endl<<"Duljina naziva upisanih fakulteta:


for(i=0; i<brfak; i++)
cout<<znakfak[i]<<'\t';

"<<endl;

cout<<endl<<endl;
cout<<"Fakultet s najduljim nazivom:
"<<fakultet<<endl;
cout<<"Broj rijeci u nazivu tog fakulteta:
"<<razmak+1<<endl<<endl<<endl;
}

60

/* Stvorite jednostavnu vezanu listu s podacima o hotelima (naziv hotela,sifra hotela,


kategorija i broj soba). Napisite u programu sljedece funkcije: za dodavanje novog
elementa u listu, za ispis elemenata liste, za brisanje elemenata liste. U main funkciji
nakon
stvorene liste pozovite funkciju za dodavanje elementa u listu, onoliko puta koliko
zelite i nakon toga ispisite listu te zatim upisite sifru hotela, provjerite je li hotel
upisan i ako nije dodajte ga u listu. Upisite sifru hotela kojeg zelite obrisati i
izbrisite
odabrani element liste. Ispisite ponovno listu i dealocirajte listu. */
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
struct hotel
{
char naziv[30];
int sifra;
int kategorija;
int soba;
hotel *sljedeci;
};
void upis(hotel *glava)
{
hotel *tr=glava;
hotel *novi=new hotel;
novi->sljedeci=NULL;
cout<<"Upisite naziv hotela:
";
cin.ignore();
cin.getline(novi->naziv, sizeof(novi->naziv));
cout<<"Upisite sifru:
cin>>novi->sifra;

";

cout<<"Upisite kategoriju:
cin>>novi->kategorija;
cout<<"Upisite broj soba:
cin>>novi->soba;

";
";

while(tr->sljedeci)
tr=tr->sljedeci;
tr->sljedeci=novi;
}

cout<<endl;

void ispis(hotel *glava)


{
hotel*tr=glava->sljedeci;
while(tr)
{
cout<<"Naziv:
"<<tr->naziv<<endl;
cout<<"Sifra:
"<<tr->sifra<<endl;
cout<<"Kategorija:
"<<tr->kategorija<<endl;
cout<<"Broj soba:
"<<tr->soba<<endl<<endl;

61

tr=tr->sljedeci;

}
void provjera(hotel *glava)
{
int sifra, provjera=0;
hotel *tr=glava->sljedeci;
cout<<"Upisite sifru hotela za provjeru:
cin>>sifra;

";

while(tr)
{
if(tr->sifra==sifra)
{
cout<<"Hotel je upisan!"<<endl;
provjera=1;
break;
}
}

tr=tr->sljedeci;

if(provjera==0)
{
hotel *tr=glava;
hotel *novi=new hotel;
novi->sljedeci=NULL;
novi->sifra=sifra;
cout<<"Upisite naziv hotela:
";
cin.ignore();
cin.getline(novi->naziv, sizeof(novi->naziv));
cout<<"Upisite kategoriju:
cin>>novi->kategorija;
cout<<"Upisite broj soba:
cin>>novi->soba;

";
";

while(tr->sljedeci)
tr=tr->sljedeci;
tr->sljedeci=novi;
}

cout<<endl;

}
void brisanje(hotel *glava)
{
int sifra;
hotel *pr=glava;
hotel *tr=glava->sljedeci;
cout<<"Upisite sifru hotela koji zelite izbrisati:
cin>>sifra;

62

";

while(tr)
{
if(tr->sifra==sifra)
{
pr->sljedeci=tr->sljedeci;
delete tr;
return;
}

pr=tr;
tr=tr->sljedeci;

}
hotel *dealociraj(hotel *glava)
{
hotel *pr=glava;
hotel *tr=glava->sljedeci;
while(tr)
{
delete pr;
pr=tr;
tr=tr->sljedeci;
}
delete pr;
}

return NULL;

void main()
{
hotel *glava=new hotel;
glava->sljedeci=NULL;
for(int i=0; i<5; i++)
upis(glava);
ispis(glava);
provjera(glava);
brisanje(glava);
ispis(glava);
glava=dealociraj(glava);
}

63

/* Napisite program koji sadrzi funkciju za stvaranje slogovne datoteke cije ime se
ucitava i koja
sadrzi slogove s komponentama maticni broj studenta, prezime i ime studenta i godina
upisa. Napisite
funkciju za unos podataka u datoteku i funkciju za ispis podataka o svim studentima. */
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
struct student
{
int mat_br;
char ime_prez[35];
int god_up;
};
student s;
char naziv_datoteke[40];
void stvaranje_datoteke()
{
fstream d;
cout<<"Upisite naziv datoteke u koju zelite pohraniti podatke:
cin.getline(naziv_datoteke, sizeof(naziv_datoteke));

";

d.open(naziv_datoteke, ios::in | ios::binary);


if(!d)
{
d.open(naziv_datoteke, ios::out | ios::binary);
d.close();
}
else
{
cout<<"Datoteka "<<naziv_datoteke<<" vec postoji na disku!";
cout<<endl;
d.close();
}
}
void unos_podataka()
{
fstream d;
char dalje;
d.open(naziv_datoteke, ios::out | ios::ate | ios::binary);
do
{

cout<<"Maticni broj:
cin>>s.mat_br;
cin.ignore();

";

cout<<"Prezime i ime:
";
cin.getline(s.ime_prez, sizeof(s.ime_prez));
cout<<"Godina upisa studija:
cin>>s.god_up;

";

64

d.write((char *) &s, sizeof(s));


cout<<"Dalje (d/n)?
";
cin>>dalje;

}
while(dalje == 'd');
d.close();
}

void ispis_podataka()
{
fstream d;
d.open(naziv_datoteke, ios::in | ios::binary);
while(!d.eof())
{
d.read((char *) &s, sizeof(s));
if(d.eof()) break;

cout<<"Maticni broj:
cout<<"Prezime i ime:
cout<<"Godina upisa:

"<<s.mat_br<<endl;
"<<s.ime_prez<<endl;
"<<s.god_up<<endl;

d.close();
}
void main()
{
stvaranje_datoteke();
unos_podataka();
ispis_podataka();
}

65

/* Napisite program koji sadrzi klasu domjenak ciji su clanovi: naziv jela, cijena jela,
kolicina jela
i metoda unos() za ucitavanje svih podataka i metoda iznos() za racunanje i ispisivanje
konacne
cijene za taj naziv jela. Alocirajte dinamicko polje od n objekata domjenak i
izracunajte i ispisite
konacnu cijenu racuna za taj domjenak. */
#include "stdafx.h"
#include "domjenak.h"
#include <iostream>
using namespace std;
void main()
{
int n;
float r=0;
cout<<"Koliko jela zelite unijeti?
cin>>n;

";

domjenak *polje = new domjenak[n];


for (int i=0; i<n; i++)
{
polje[i].unos();
r+=polje[i].iznos();
}
cout<<"Racun iznosi:

"<<r<<" kn"<<endl;

delete []polje;
polje = NULL;
}

66

/* Program za jednostavno nasljedjivanje - knjiga, roman, udzbenik, monografija. */


#include "stdafx.h"
#include "knjiga.h"
#include <iostream>
using namespace std;
void main()
{
knjiga k;
udzbenik u;
roman r;
monografija m;
cout<<"Unos knjige:
k.unos();

"<<endl;

cout<<endl<<"Unos udzbenika:
u.unos();
cout<<endl<<"Unos romana:
r.unos();

"<<endl;
"<<endl;

cout<<endl<<"Unos monografije:
m.unos();

"<<endl;

cout<<endl;
k.ispis();
u.ispis();
r.ispis();
m.ispis();
}

cout<<endl;

67

/* Napisite program koji sadrzi funkciju za stvaranje slogovne datoteke cije se ime
ucitava i koja
sadrzi slogove s komponentama: naziv skijalista, broj staza, duljina svih staza i
indikator da/ne
sluzi li skijaliste za odrzavanje svjetskih prvenstava ili ne. Napisite funkciju za unos
slogova u
datoteku, funkciju za ispis svih slogova iz datoteke i funkciju za ispis odabranog sloga
prema upisanom
nazivu skijalista. */
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct skijaliste
{
char naziv[30];
int broj_staza;
int duljina_staza;
bool svjetsko;
};
char naziv_dat[60];
skijaliste s;
void stvori()
{
fstream d;
cout<<"Upisite naziv datoteke u koju zelite upisivati podatke:
cin.getline(naziv_dat, sizeof(naziv_dat));

";

d.open(naziv_dat, ios::in | ios::binary);


if(d)
{
}
else
{

cout<<"Datoteka "<<naziv_dat<<" vec postoji na disku."<<endl;


d.close();

d.open(naziv_dat, ios::out | ios::binary);


cout<<"Datoteka "<<naziv_dat<<" je stvorena."<<endl;
d.close();

}
void unos()
{
fstream d;
char dalje, svjetsko;
d.open(naziv_dat, ios::out | ios::ate | ios::binary);
do
{

cout<<endl<<"Naziv skijalista:
";
cin.getline(s.naziv, sizeof(s.naziv));

68

cout<<"Broj staza:
cin>>s.broj_staza;

";

cout<<"Ukupna duljina staza:


cin>>s.duljina_staza;

";

cout<<"Sluzi li skijaliste za odrzavanje svjetskih prvenstava (d/n)?


cin>>svjetsko;
if(svjetsko == 'd')
s.svjetsko = true;
else
s.svjetsko = false;

";

d.write((char *) &s, sizeof(s));


cout<<"Dalje (d/n)?
cin>>dalje;
cin.ignore();

";

}
while(dalje == 'd');
d.close();
}
void ispis_svih()
{
fstream d;
d.open(naziv_dat, ios::in | ios::binary);
while(!d.eof())
{
d.read((char *) &s, sizeof(s));
if(d.eof()) break;

cout<<endl<<"Naziv skijalista:
"<<s.naziv<<endl;
cout<<"Broj staza:
"<<s.broj_staza<<endl;
cout<<"Ukupna duljina staza:
"<<s.duljina_staza<<endl;
if(s.svjetsko == true)
cout<<"Skijaliste sluzi za odrzavanje svjetskih prvenstava."<<endl;
else
cout<<"Skijaliste ne sluzi za odrzavanje svjetskih prvenstava."<<endl;

d.close();
}
void ispis_odabranog()
{
fstream d;
char odabrani[30];
d.open(naziv_dat, ios::in | ios::binary);
cout<<endl<<"Upisite naziv skijalista cije podatke zelite ispisati:
cin.getline(odabrani, sizeof(odabrani));
while(!d.eof())
{
d.read((char *) &s, sizeof(s));

69

";

if(d.eof()) break;
if(strcmp(s.naziv, odabrani) == 0)
{
cout<<endl<<"Naziv skijalista:
"<<s.naziv<<endl;
cout<<"Broj staza:
"<<s.broj_staza<<endl;
cout<<"Ukupna duljina staza:
"<<s.duljina_staza<<endl;
if(s.svjetsko == true)
cout<<"Skijaliste sluzi za odrzavanje svjetskih
prvenstava."<<endl;
else
cout<<"Skijaliste ne sluzi za odrzavanje svjetskih
prvenstava."<<endl;
d.close();
return;
}

cout<<"Nije pronadjen zapis s tim nazivom."<<endl;


d.close();

void main()
{
stvori();
unos();
ispis_svih();
ispis_odabranog();
}

cout<<endl;

70

/* Napisite program koji sadrzi klasu kupnja ciji su clanovi naziv robe, kod robe,
cijena robe, kolicina
robe te metoda unos() za ucitavanje svih podataka i metoda iznos() za racunanje i
ispisivanje konacne
cijene za taj naziv_robe. Alocirajte dinamicko polje od n objekata kupnja i izracunajte
i ispisite
konacnu cijenu racuna za tih n kupnji. */
#include "stdafx.h"
#include <iostream>
#include "kupnja.h"
using namespace std;
void main()
{
int n;
float cijena;
cout<<"Upisite broj artikala koje zelite unijeti:
cin>>n;
cin.ignore();
kupnja *k = new kupnja[n];

";

for(int i=0; i<n; i++)


{
cout<<endl;
k[i].unos();
cijena += k[i].iznos();
}
delete []k;
k = NULL;
cout<<endl<<"Ukupna cijena:

"<<cijena<<endl<<endl;

}
/* Namjestaj, ormar, lezaj, stolica. */
#include "stdafx.h"
#include <iostream>
#include "namjestaj.h"
using namespace std;
void main()
{
namjestaj n;
ormar o;
lezaj l;
stolica s;
cout<<"Upis namjestaja:"<<endl;
n.upis();
cout<<endl;
cout<<"Upis ormara:"<<endl;
o.upis();
cout<<endl;
cout<<"Upis lezaja:"<<endl;
l.upis();

71

cout<<endl;
cout<<"Upis stolice:"<<endl;
s.upis();
cout<<endl<<endl;
cout<<"Ispis namjestaja:"<<endl;
n.ispis();
cout<<endl;
cout<<"Ispis ormara:"<<endl;
o.ispis();
cout<<endl;
cout<<"Ispis lezaja:"<<endl;
l.ispis();
cout<<endl;
cout<<"Ispis stolice:"<<endl;
s.ispis();
cout<<endl<<endl;
}

72

/* Napisite program koji sadrzi funkciju za stvaranje slogovne datoteke cije se ime
ucitava i koja
sadrzi slogove s komponentama: naziv turistickog mjesta, broj hotela, broj apartmana i
indikator
da/ne organizira li se docek Nove Godine na otvorenom ili ne. Napisite f-ju za unos
slogova u
datoteku, za ispis svih slogova iz datoteke i za ispis odabranog sloga prema upisanom
nazivu mjesta. */
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct mjesto
{
char naziv[30];
int broj_hotela;
int broj_apartmana;
bool docek;
};
char naziv_datoteke[50];
mjesto m;
void stvori()
{
fstream d;
cout<<"Upisite naziv datoteke u koju zelite unijeti podatke:
cin.getline(naziv_datoteke, sizeof(naziv_datoteke));
d.open(naziv_datoteke, ios::in | ios::binary);
if(d)
{
cout<<"Datoteka vec postoji na disku!"<<endl;
d.close();
}
else
{

d.open(naziv_datoteke, ios::out | ios::binary);


cout<<"Datoteka je stvorena!"<<endl;
d.close();

void unesi()
{
fstream d;
char dalje;
char docek;
d.open(naziv_datoteke, ios::out | ios::ate | ios::binary);
do
{

cout<<endl<<"Upisite naziv mjesta:


";
cin.getline(m.naziv, sizeof(m.naziv));

73

";

cout<<"Upisite broj hotela:


cin>>m.broj_hotela;

";

cout<<"Upisite broj apartmana:


cin>>m.broj_apartmana;

";

cout<<"Organizira li se docek Nove Godine na otvorenom (d/n)?


cin>>docek;
if(docek == 'd')
m.docek = true;
else
m.docek = false;

";

d.write((char *)&m, sizeof(m));


cout<<"Dalje (d/n)?
cin>>dalje;
cin.ignore();

";

}
while(dalje == 'd');
d.close();
}
void ispisi_sve()
{
fstream d;
d.open(naziv_datoteke, ios::in | ios::binary);
while(!d.eof())
{
d.read((char *)&m, sizeof(m));
if(d.eof()) break;
cout<<endl<<"Naziv:
"<<m.naziv<<endl;
cout<<"Broj hotela:
"<<m.broj_hotela<<endl;
cout<<"Broj apartmana:
"<<m.broj_apartmana<<endl;
if(m.docek == true)
cout<<"Organizira se docek Nove Godine na otvorenom."<<endl;
else
cout<<"Ne organizira se docek Nove Godine na otvorenom."<<endl;
}
}

d.close();

void ispisi_odabrani()
{
fstream d;
char odabrani[30];
cout<<endl<<"Upisite naziv mjesta za koje zelite ispisati podatke:
cin.getline(odabrani, sizeof(odabrani));
d.open(naziv_datoteke, ios::in | ios::binary);
while(!d.eof())
{
d.read((char *)&m, sizeof(m));

74

";

if(d.eof()) break;
if(strcmp(m.naziv, odabrani) == 0)
{
cout<<"Naziv:
"<<m.naziv<<endl;
cout<<"Broj hotela:
"<<m.broj_hotela<<endl;
cout<<"Broj apartmana:
"<<m.broj_apartmana<<endl;
if(m.docek == true)
cout<<"Organizira se docek Nove Godine na otvorenom."<<endl;
else
cout<<"Ne organizira se docek Nove Godine na otvorenom."<<endl;

d.close();
return;

}
cout<<"Ne postoji mjesto s tim nazivom!"<<endl;
}

d.close();

void main()
{
stvori();
unesi();
ispisi_sve();
ispisi_odabrani();
}

cout<<endl;

75

/* Napisite program koji sadrzi klasu nabava ciji su clanovi vrsta racunala, kod
racunala, cijena
racunala, pdv, kolicina racunala, te metoda unos() za ucitavanje svih podataka i metoda
iznos() za
racunanje i ispisivanje konacne cijene za tu vrstu racunala. Alocirajte dinamicko polje
od n objekata
nabava i izracunajte i ispisite konacnu cijenu racuna za cjelokupnu nabavu. */
#include "stdafx.h"
#include <iostream>
#include "nabava.h"
using namespace std;
void main()
{
int n;
float konacna_cijena = 0;
cout<<"Upisite broj vrsta racunala:
cin>>n;
cin.ignore();

";

nabava *polje = new nabava[n];


for(int i=0; i<n; i++)
{
polje[i].unos();
cout<<"Cijena za "<<i+1<<". vrstu racunala:
konacna_cijena += polje[i].iznos();
}
cout<<endl<<"Konacna cijena:

";

"<<konacna_cijena<<endl;

delete []polje;
polje = NULL;
}
/* Nasljedjivanje: kuca, obiteljska_kuca, poslovna_zgrada, stambena_zgrada. */
#include "stdafx.h"
#include <iostream>
#include "kuca.h"
using namespace std;
void main()
{
kuca k;
obiteljska_kuca o;
poslovna_zgrada p;
stambena_zgrada s;
cout<<"Upis podataka o kuci:"<<endl;
k.upis();
cout<<endl<<"Upis podataka o obiteljskoj kuci:"<<endl;
o.upis();
cout<<endl<<"Upis podataka o poslovnoj zgradi:"<<endl;
p.upis();
cout<<endl<<"Upis podataka o stambenoj zgradi:"<<endl;

76

s.upis();
cout<<endl<<"Ispis podataka o kuci:"<<endl;
k.ispis();
cout<<endl<<"Ispis podataka o obiteljskoj kuci:"<<endl;
o.ispis();
cout<<endl<<"Ispis podataka o poslovnoj zgradi:"<<endl;
p.ispis();
cout<<endl<<"Ispis podataka o stambenoj zgradi:"<<endl;
s.ispis();
cout<<endl;
}

77

/* U main funkciji ucitajte svoj datum rodjenja. U funkciji max pronadjite najvecu
znamenku
u ucitanom datumu rodjenja, te u funkciji potencija pronadjite vrijednost potencije
broja x
ucitanog u main funkciji s eksponentom najvece znamenke dobivene iz funkcije max.
Ispisite datum rodjenja, najvecu znamenku i vrijednost potencije. */
#include "stdafx.h"
#include <iostream>
using namespace std;
int max(long x);
long potencija(int x, int y);
void main()
{
long datum;
int znam, br;
cout<<"Upisite svoj datum rodjenja u formatu DDMMGGGG:
cin>>datum;
cout<<endl;
znam=max(datum);
cout<<"Upisi broj:
cin>>br;

";

cout<<endl<<"Vas datum rodjenja je:


"<<datum<<endl;
cout<<"Najveca znamenka je:
"<<znam<<endl;
cout<<znam<<"-ta potencija ucitanog broja je:
"<<potencija(br,znam)<<endl<<endl<<endl;
}
int max(long x)
{
int najveca=0;
while(x!=0)
{
if(x%10>najveca)
najveca=x%10;
x/=10;
}

return najveca;

long potencija(int x, int y)


{
if(y==0) return 1;
else
{
if(y==1) return x;
else return x*potencija(x,y-1);
}
}

78

";

/* Upisite naziv fakulteta i u funkciji suma pronadjite sumu ASCII kodova upisanog
naziva
fakulteta, te u funkciji pretvori pretvorite dobivenu sumu u sustav s bazom 19. Ispisite
dobivenu sumu
i njen ekvivalent u sustavu s bazom 19. */
#include "stdafx.h"
#include <iostream>
#include <string>
#define M 50
using namespace std;
int suma(char n[]);
void pretvori(int s);
void main()
{
char fakultet[M];
int s;
cout<<"Upisite naziv fakulteta:
cin.getline(fakultet, M-1);
cout<<endl;

";

s=suma(fakultet);
cout<<"Suma ASCII kodova upisanog naziva:
cout<<"Ekvivalent u sustavu s bazom 19:
pretvori(s);
cout<<endl<<endl<<endl;
}
int suma(char n[])
{
int s=0;
for(int i=0; i<strlen(n); i++)
s+=n[i];
}

return s;

void pretvori(int s)
{
int ostatak;
if(s>18)
pretvori(s/19);
ostatak=s%19;
if(ostatak>9) cout<<char(ostatak+55);
else cout<<ostatak;
}

79

"<<s<<endl<<endl;
";

/* Ucitajte svoj datum upisa studija u main funkciji. U funkciji suma pronadjite sumu
znamenaka
koje se pojavljuju u ucitanom datumu, te u funkciji potencija pronadjite vrijednost
potencije
dobivene sume s eksponentom x ucitanim u main funkciji. Ispisite datum upisa, dobivenu
sumu
i vrijednost potencije. */
#include "stdafx.h"
#include <iostream>
#include <ctype.h>
using namespace std;
int suma(char d[])
{
int s=0, i=0;
while(d[i])
{
if(isdigit(d[i]))
s+=(d[i]-'0');
i++;
}
return s;
}
unsigned long potencija(int s, int x)
{
if(x==0)
return 1;
else
if(x==1)
return s;
else
return s*potencija(s, x-1);
}
void main()
{
char datum[12];
int sum, x;
unsigned long pot;
cout<<"Upisite datum upisa studija u formatu DD/MM/GGGG:
cin.getline(datum, 11);
cout<<endl;
sum=suma(datum);
cout<<"Upisite eksponent:
cin>>x;
cout<<endl;

";

pot=potencija(sum,x);
cout<<"Datum upisa studija:
"<<datum<<endl;
cout<<"Suma znamenaka datuma: "<<sum<<endl;
cout<<x<<"-ta potencija sume: "<<pot<<endl<<endl<<endl;
}

80

";

/* Napisite program koji racuna dzeparce za clanove obitelji u jednoj godini. Potrebno
je
upisati broj clanova obitelji i za svakog clana upisati iznose dzeparca za 12 mjeseci, a
nakon toga
izracunati prosjecni dzeparac za pojedinu osobu i pojedini mjesec. */
#include "stdafx.h"
#include <iostream>
#define M 10
using namespace std;
void main()
{
float pros[M]={0}, prmj[12]={0};
int dzep[M][12], brcl, i, j;
cout<<"Upisite broj clanova obitelji (1-10):
cin>>brcl;
cout<<endl;

";

for(i=0; i<brcl; i++)


for(j=0; j<12; j++)
{
cout<<"Upisite iznos dzeparca za "<<i+1<<". osobu za "<<j+1<<".
mjesec:
";
cin>>dzep[i][j];
pros[i]+=dzep[i][j];
prmj[j]+=dzep[i][j];
}
cout<<endl<<"Iznosi dzeparca po osobi i mjesecu:"<<endl;
for(i=0; i<brcl; i++)
{
for(j=0; j<12; j++)
cout<<dzep[i][j]<<'\t';
cout<<endl;
}
cout<<endl;
cout<<"Prosjecni iznosi dzeparaca po osobi:"<<endl;
for(i=0; i<brcl; i++)
cout<<pros[i]/12<<'\t';
cout<<endl<<endl;

cout<<"Prosjecni iznosi dzeparaca po mjesecu:"<<endl;


for(i=0; i<12; i++)
cout<<prmj[i]/brcl<<'\t';
cout<<endl<<endl<<endl;

81

/* Napisite program koji sadrzi funkciju za stvaranje polja pismeni koje sadrzi bodove
iz nekog ispita
za n studenata. Stvorite polje p koje ce sadrzavati samo one bodove koji su veci od 45.
Sortirajte niz p
silazno i ispisite ga. */
#include "stdafx.h"
#include <iostream>
#define M 100
using namespace std;
void stvori(int pismeni[], int n)
{
int i;
for(i=0; i<n; i++)
{
cout<<"Upisite bodove za "<<i+1<<". studenta:
cin>>pismeni[i];
}
}
int vecih(int pismeni[], int n)
{
int i, brojac=0;
for(i=0; i<n; i++)
if(pismeni[i]>45)
brojac++;
return brojac;

}
void main()
{
int pismeni[M], p[M], n, i, j=0, veci, temp;
cout<<"Upisite broj studenata:
cin>>n;
cout<<endl;
stvori(pismeni,n);
for(i=0; i<n; i++)
if(pismeni[i]>45)
{
p[j]=pismeni[i];
j++;
}
veci=vecih(pismeni,n);

";

for(i=0; i<veci; i++)


for(j=(i+1); j<veci; j++)
if(p[i]<p[j])
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}

cout<<endl<<"Rezultati veci od 45:"<<endl;


for(i=0; i<veci; i++)
cout<<p[i]<<'\0';
cout<<endl<<endl<<endl;

82

";

/* Stvorite polje od n naziva biblioteka. Ucitajte naziv biblioteke za koji zelite


provjeriti
nalazi li se u ucitanom polju i ako se nalazi ispisite poruku "Naziv postoji", a ako ne
ispisite poruku "Naziva nema". Pronadjite u polju najkraci naziv biblioteke i kopirajte
ga u
string biblio. Prebrojite koliko rijeci ima naziv te biblioteke i svako prvo slovo u
rijeci
pretvorite u veliko slovo. Stvorite 1D polje koje ce sadrzavati brojeve znakova svakog
naziva
biblioteke. Ispisite stvorena polja i string biblio. */
#include "stdafx.h"
#include <iostream>
#include <string>
#include <ctype.h>
#define M 50
using namespace std;
void main()
{
char nazivb[M][M], provjera[M], biblio[M];
int n, i, kraci=M-1, br=1, j, pozicija, brojac=0, ima, brzn[M];
cout<<"Upisite zeljeni broj naziva biblioteka:
cin>>n;
cin.ignore();
cout<<endl;

";

for(i=0; i<n; i++)


{
cout<<"Upisite naziv "<<i+1<<". biblioteke:
cin.getline(nazivb[i], M-1);
}
cout<<endl;
cout<<"Upisite naziv biblioteke za provjeru:
cin.getline(provjera, M-1);
ima=0;
for(i=0; i<n; i++)
if(strcmp(nazivb[i], provjera)==0)
{
ima=1;
break;
}
if(ima==1)
cout<<"Naziv postoji.";
else
cout<<"Naziva nema.";
cout<<endl<<endl;
for(i=0; i<n; i++)
if(strlen(nazivb[i])<kraci)
{
kraci=strlen(nazivb[i]);
strcpy(biblio, nazivb[i]);
}
for(i=0; biblio[i]!='\0'; i++)
if(biblio[i]==' ')

83

";

";

br++;
for(i=0; i<br; i++)
{
pozicija=brojac;
biblio[pozicija]=toupper(biblio[pozicija]);
for(j=pozicija+1; biblio[j]!=' '; j++)
brojac++;
brojac+=2;
}
for(i=0; i<n; i++)
brzn[i]=strlen(nazivb[i]);
cout<<"Upisane biblioteke:"<<endl;
for(i=0; i<n; i++)
cout<<"Biblioteka "<<i+1<<":
cout<<endl<<endl;

"<<nazivb[i]<<endl;

cout<<"Broj znakova u nazivima upisanih biblioteka:"<<endl;


for(i=0; i<n; i++)
cout<<brzn[i]<<'\t';
cout<<endl<<endl;
}

cout<<"Biblioteka s najkracim nazivom:"<<endl<<biblio<<endl<<endl<<endl;

84

You might also like