You are on page 1of 7

#include <iostream>

#include <string>

using namespace std;

struct delo
{
string imeSlikara; //ime i prezime slikara
string imeSlike; //ime slike
int godinaSlikanja; //godina kada je slika zavrsena
string mestoSlikanja; //mesto u kom je naslikana slika
int brojSlikarevihSlika;//broj slika koje je jedan slikar naslikao u svom
zivotu
};
delo galerija[10000]; //niz od maximalno 10000 slika

void bubbleSort(delo galerija[10000], int n) //sortiranje motodom bubble sort


{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (galerija[j].godinaSlikanja > galerija[i].godinaSlikanja)
{
delo pom = galerija[i];
galerija[i] = galerija[j];
galerija[j] = pom;
}
}
}
}
void insertionSort(delo galerija[10000], int n) //sortiranje metodom insertion sort
{
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++)
{
if (galerija[j].brojSlikarevihSlika <
galerija[i].brojSlikarevihSlika)
{
delo pom = galerija[i];
galerija[i] = galerija[j];
galerija[j] = pom;
}
}
}
}

void selectionSort(delo galerija[10000], int n) //sortiranje metodom selection sort


{
for (int i = 0; i < n - 1; i++)
{
int min3 = 1000;
int poz = -1;
for (int j = i + 1; j < n; j++)
{
if (galerija[j].godinaSlikanja < min3)
{
min3 = galerija[j].godinaSlikanja;
poz = j;
}
}

delo pom = galerija[i];


galerija[i] = galerija[poz];
galerija[poz] = pom;
}
}

void binarnaPretraga(int n)
{
int levi = 0;
int desni = n - 1;
bool pronadjen = false;
int x;
cin >> x;

int srednji = -1;


while (levi <= desni && pronadjen == false)
{
srednji = (levi + desni) / 2;
if (x == galerija[srednji].godinaSlikanja)
pronadjen = true;
else if (x <galerija[srednji].godinaSlikanja)
desni = srednji - 1;
else
levi = srednji + 1;
}

if (pronadjen)
cout << "Tražen element se nalazi na poiziciji " << srednji<< endl;
else
cout << "Tražen element se ne nalazi u nizu" << endl;

}
int main()
{
//zadate pocetne vrednosti strukture
galerija[0].imeSlikara = "Pablo Picasso";
galerija[0].imeSlike = "Guernica";
galerija[0].mestoSlikanja = "Paris";
galerija[0].godinaSlikanja = 1937;
galerija[0].brojSlikarevihSlika = 50000;
cout << galerija[0].imeSlikara << " - " << galerija[0].imeSlike << " - " <<
galerija[0].mestoSlikanja << " - " << galerija[0].godinaSlikanja << " - " <<
galerija[0].brojSlikarevihSlika << endl;

galerija[1].imeSlikara = "Salvador Dali";


galerija[1].imeSlike = "The Elephants";
galerija[1].mestoSlikanja = "Figueres";
galerija[1].godinaSlikanja = 1948;
galerija[1].brojSlikarevihSlika = 1500;
cout << galerija[1].imeSlikara << " - " << galerija[1].imeSlike << " - " <<
galerija[1].mestoSlikanja << " - " << galerija[1].godinaSlikanja << " - " <<
galerija[1].brojSlikarevihSlika << endl;

galerija[2].imeSlikara = "Frida Kahlo";


galerija[2].imeSlike = "Dve Fride";
galerija[2].mestoSlikanja = "Mexiko Siti";
galerija[2].godinaSlikanja = 1939;
galerija[2].brojSlikarevihSlika = 200;
cout << galerija[2].imeSlikara << " - " << galerija[2].imeSlike << " - " <<
galerija[2].mestoSlikanja << " - " << galerija[2].godinaSlikanja << " - " <<
galerija[2].brojSlikarevihSlika << endl;

galerija[3].imeSlikara = "Diego Rivera";


galerija[3].imeSlike = "The Flower Carrier";
galerija[3].mestoSlikanja = "Guanajuato";
galerija[3].godinaSlikanja = 1935;
galerija[3].brojSlikarevihSlika = 145;
cout << galerija[3].imeSlikara << " - " << galerija[3].imeSlike << " - " <<
galerija[3].mestoSlikanja << " - " << galerija[3].godinaSlikanja << " - " <<
galerija[3].brojSlikarevihSlika << endl;

galerija[4].imeSlikara = "Georgia O'Keeffe";


galerija[4].imeSlike = "Jimson Weed";
galerija[4].mestoSlikanja = "Sun Prairie";
galerija[4].godinaSlikanja = 1936;
galerija[4].brojSlikarevihSlika = 237;
cout << galerija[4].imeSlikara << " - " << galerija[4].imeSlike << " - " <<
galerija[4].mestoSlikanja << " - " << galerija[4].godinaSlikanja << " - " <<
galerija[4].brojSlikarevihSlika << endl;

cout << endl;

int n; //n je broj dela koje korisnik zeli da unese naknadno


(rucno)
cout << "za koliko jos dela zelite da unesete podatke? ";
cin >> n;
string nr; getline(cin, nr);
//unos elemenata
for (int i = 5; i < n + 5; i++)
{
cout << "unesite ime " << i + 1 << " slikara: ";
getline(cin, galerija[i].imeSlikara);
cout << "unesite ime " << i +1 << " slike: ";
getline(cin, galerija[i].imeSlike);
cout << "unesite mesto u kome je naslikana " << i + 1 << " slika: ";
getline(cin, galerija[i].mestoSlikanja);
cout << "unesite godinu slikanja " << i + 1 << " slike: ";
cin >> galerija[i].godinaSlikanja;
cout << "unesite broj slika koje je " << i + 1 << " slikar naslikao: ";
cin >> galerija[i].brojSlikarevihSlika;
getline(cin, nr);
}

cout << endl;

n = n + 5;
//isps strukture nakon unosa dodatnih elemenata
for (int i = 0; i < n; i++)
cout << galerija[i].imeSlikara << " - " << galerija[i].imeSlike << " -
" << galerija[i].mestoSlikanja << " - " << galerija[i].godinaSlikanja << " - " <<
galerija[i].brojSlikarevihSlika << endl;

cout << endl;


cout << "delo sa kojim imenom slikara zelite da obrisete? ";
string ime; //promenljiva za unos elementa kog zelimo da izbrisemo
getline(cin, ime);
for (int i = 0; i < n; i++)
{
if (galerija[i].imeSlikara == ime)
{
for (int j = i; j < n - 1; j++)
galerija[j] = galerija[j + 1];
i--;
n--;
}
}

cout << endl;

//ispis niza nakon brisanja elementa


for (int i = 0; i < n; i++)
cout << galerija[i].imeSlikara << " - " << galerija[i].imeSlike << " -
" << galerija[i].mestoSlikanja << " - " << galerija[i].godinaSlikanja << " - " <<
galerija[i].brojSlikarevihSlika << endl;

cout << endl;

//izracunavanje ukupnog broja slika svih slikara zajedno


cout << "ukupan broj slika svih slikara: ";
int zbir = 0;
for (int i = 0; i < n; i++)
zbir += galerija[i].brojSlikarevihSlika;
cout << zbir << endl;

cout << endl;

//pronalazenje najranije slike u nizu


int min = galerija[0].godinaSlikanja;
for (int i = 0; i < n; i++)
if (galerija[i].godinaSlikanja < min)
min = galerija[i].godinaSlikanja;
cout << "najranija slika je naslikana: " << min << endl;

cout << endl;

//pronalazenje najmanjeg broja slika koji je neki slikar naslikao


int min1 = galerija[0].brojSlikarevihSlika;
for (int i = 0; i < n; i++)
if (galerija[i].brojSlikarevihSlika < min)
min = galerija[i].brojSlikarevihSlika;
cout << "slikar sa najmanje slika ima " << min << " slika" << endl;

cout << endl;

//pronalazenje najskorije naslikane slike


int max = 0;
for (int i = 0; i < n; i++)
if (galerija[i].godinaSlikanja > max)
max = galerija[i].godinaSlikanja;
cout << "najskorija slika je naslikana: " << max << endl;

cout << endl;


//pronalazenje najveceg broja slika koji je neki slikar naslikao
int max1 = 0;
for (int i = 0; i < n; i++)
if (galerija[i].brojSlikarevihSlika > max1)
max1 = galerija[i].brojSlikarevihSlika;
cout << "salikar sa najvise slika ima " << max1 << " slika" << endl;

cout << endl;

//pronalazenje broja slikara u nizu i pronalazenje prosecne godine u kojoj su


stvarali slikari 20. veka
int brojac = 0;
int zbir1 = 0;
for (int i = 0; i < n; i++)
{
zbir1 = zbir1 + galerija[i].godinaSlikanja;
brojac++;
}
int prosek = zbir1 / brojac;
cout << "ukupan broj slikara u nizu je: " << brojac << endl;

cout << endl;

cout << "prosecna godina slikanja skike u XX veku je " << prosek << " godina"
<< endl;

cout << endl;

//pronalazenje prosecnog broja slika koje su slikai naslikali


int brojac1 = 0;
double zbir2 = 0;
for (int i = 0; i < n; i++)
{
zbir2 = zbir2 + galerija[i].brojSlikarevihSlika;
brojac1++;
}
double prosek2 = zbir2 / brojac1;
cout << "prosecan broj slika koje su slikari naslikali je " << prosek2 << "
slika" << endl;

cout << endl;

//pronalazenje i prikaz slikara koji su naslikali veci broj slika od proseka


cout << "slikari koji su naslikali veci broj slika od proseka " << endl;
cout << endl;
for (int i = 0; i < n; i++)
if (galerija[i].brojSlikarevihSlika > prosek2)
cout << galerija[i].imeSlikara << " - " << galerija[i].imeSlike
<< " - " << galerija[i].mestoSlikanja << " - " << galerija[i].godinaSlikanja << " -
" << galerija[i].brojSlikarevihSlika << endl;

cout << endl;

//pronalazenje i prikaz slikara koji su stvarali posle prosecne godine


cout << "slikari koji su slikali posle godine proseka " << endl;
cout << endl;
for (int i = 0; i < n; i++)
if (galerija[i].godinaSlikanja > prosek)
cout << galerija[i].imeSlikara << " - " << galerija[i].imeSlike
<< " - " << galerija[i].mestoSlikanja << " - " << galerija[i].godinaSlikanja << " -
" << galerija[i].brojSlikarevihSlika << endl;

cout << endl;

//pronalazenje i prikaz slikara koji su naslikali manji broj slika od proseka


cout << "slikari koji su naslikali manji broj slika od proseka " << endl;
cout << endl;
for (int i = 0; i < n; i++)
if (galerija[i].brojSlikarevihSlika < prosek2)
cout << galerija[i].imeSlikara << " - " << galerija[i].imeSlike
<< " - " << galerija[i].mestoSlikanja << " - " << galerija[i].godinaSlikanja << " -
" << galerija[i].brojSlikarevihSlika << endl;

cout << endl;

//proanalazenje i prikaz slikara koji su slikali pre godine proseka


cout << "slikari koji su slikali pre godine proseka " << endl;
cout << endl;
for (int i = 0; i < n; i++)
if (galerija[i].godinaSlikanja < prosek)
cout << galerija[i].imeSlikara << " - " << galerija[i].imeSlike
<< " - " << galerija[i].mestoSlikanja << " - " << galerija[i].godinaSlikanja << " -
" << galerija[i].brojSlikarevihSlika << endl;

cout << endl;

//sortiranje godina stvaranja unetih slikara


//buble sort
cout << "sortiranje godine slikanja " << endl;
bubbleSort(galerija, n);
for (int i = 0; i < n; i++)
cout << galerija[i].godinaSlikanja << endl;

cout << endl;

cout << "sortiranje po broju naslikanih slika" << endl;


insertionSort(galerija,n);
for (int i = 0; i < n; i++)
cout << galerija[i].brojSlikarevihSlika << endl;

//linearna pretraga slikara


cout << "unesite slikara kog zelite da pretrazite" << endl;
string x;
cin >> x;
bool pronadjen = false;
int i = 0;
while (i < n && pronadjen == false && galerija[i].imeSlikara <= x)

{
if (galerija[i].imeSlikara == x)
pronadjen = true;
else
i++;
}
//ispisivanje pozicije slikara i ispisivanje slikarevih podataka u nizu
cout << "slikar se nalazi u nizu i to na " << i << " poziciji" << endl;
cout << "prikaz pronadjenog niza" << endl;
cout << endl;
if (pronadjen)
cout << galerija[i].imeSlikara << " - " << galerija[i].imeSlike << " -
" << galerija[i].mestoSlikanja << " - " << galerija[i].godinaSlikanja << " - " <<
galerija[i].brojSlikarevihSlika << endl;
else
cout << "Trazen element se ne nalazi u nizu" << endl;

return 0;
}

You might also like