/ Published in: C++
U datoteci main.cpp nalazi se kojim korisnik unosi nove životinje, ispiše evidentirane životinje, pretražuje i filtrira prema datumu, briše životinje prema nazivu ili vrsti te silazno sortira pomoću metode Merge Sort.
Expand |
Embed | Plain Text
#include <iostream> #include <string> using namespace std; int sifra; struct zivotinja { int sifra, cij; string naziv, vrs; long int dat; }; //#include "lista_polje.h" #include "lista_pokazivac.h" int funkcija_dod(Lista *zivot) { cout << "Unos podataka za novu zivotinju." << endl; zivotinja nov; nov.sifra = sifra++; cout << "Vrsta: " << endl; cin >> nov.vrs; cout << "Naziv: " << endl; cin >> nov.naziv; cout << "Cijena: " << endl; cin >> nov.cij; cout << "Datum: " << endl; cin >> nov.dat; if (InsertL(nov, EndL(zivot), zivot)) { return 1; } else { return 0; } } void funkcija_isp(Lista *zivot) { element tekuci = EndL(zivot); zivotinja zivotinje; cout << "Ispis zivotinja od najvece sifre." << endl; do { tekuci = PreviousL(tekuci, zivot); zivotinje = RetrieveL(tekuci, zivot); cout << "Sifra: " << zivotinje.sifra << ", vrsta: " << zivotinje.vrs; cout << ", naziv: " << zivotinje.naziv << ", cijena: " << zivotinje.cij; cout << ", datum: " << zivotinje.dat << endl << endl; } while (tekuci != FirstL(zivot)); // cout << "Ispis zavrsen." << endl; } int funkcija_brisi_naziv(Lista *zivot) { cout << "Naziv za brisanje: "; string unos; cin >> unos; int brisanje = 0; element tekuci; zivotinja zivotinje; tekuci = FirstL(zivot); while (tekuci != EndL(zivot)) { zivotinje = RetrieveL(tekuci, zivot); if (zivotinje.naziv == unos) { brisanje = 1; DeleteL(tekuci, zivot); } else { tekuci = NextL(tekuci, zivot); } } return brisanje; } int funkcija_brisi_vrs(Lista *zivot) { cout << "Vrsta za brisanje: "; string unos; cin >> unos; int brisanje = 0; element tekuci; zivotinja zivotinje; tekuci = FirstL(zivot); while (tekuci != EndL(zivot)) { zivotinje = RetrieveL(tekuci, zivot); if (zivotinje.vrs == unos) { brisanje = 1; DeleteL(tekuci, zivot); } else { tekuci = NextL(tekuci, zivot); } } return brisanje; } void funkcija_trazi_dat(Lista *zivot) { element tekuci; tekuci = FirstL(zivot); zivotinja zivotinje; cout << "Trazimo zivotinje novije 20120923." << endl; while (tekuci != EndL(zivot)) { zivotinje = RetrieveL(tekuci, zivot); if (zivotinje.dat > 20120923) { cout << "Sifra: " << zivotinje.sifra << ", vrsta: " << zivotinje.vrs; cout << ", naziv: " << zivotinje.naziv << ", cijena: " << zivotinje.cij; cout << ", datum: " << zivotinje.dat << endl << endl; } tekuci = NextL(tekuci, zivot); } cout << "Trazenje gotovo." << endl; } void merge_sort_cij(zivotinja po[], int lijevi, int desni) { int sredina = (lijevi + desni) / 2; zivotinja temp; if (desni - lijevi == 1) { if (po[desni].cij > po[lijevi].cij) { temp = po[desni]; po[desni] = po[lijevi]; po[lijevi] = temp; return; } } else if (desni == lijevi) { return; } else { merge_sort_cij(po, lijevi, sredina); merge_sort_cij(po, sredina +1, desni); int size_pomocno = desni-lijevi +1; zivotinja *po_pomocno = new zivotinja[size_pomocno]; int l = lijevi; int s = sredina +1; for (int i = 0; i < size_pomocno; i++) { if (l == sredina+1) { po_pomocno[i] = po[s]; s++; continue; } if (s == desni +1) { po_pomocno[i] = po[l]; l++; continue; } if (po[l].cij > po[s].cij) { po_pomocno[i] = po[l]; l++; } else { po_pomocno[i] = po[s]; s++; } } int j = 0; for (int i = lijevi; i <= desni; i++) { po[i] = po_pomocno[j]; j++; } } } void merge_sort_naziv(zivotinja po[], int lijevi, int desni) { int sredina = (lijevi + desni) / 2; zivotinja temp; if (desni - lijevi == 1) { if (po[desni].naziv > po[lijevi].naziv) { temp = po[desni]; po[desni] = po[lijevi]; po[lijevi] = temp; return; } } else if (desni == lijevi) { return; } else { merge_sort_naziv(po, lijevi, sredina); merge_sort_naziv(po, sredina +1, desni); int size_pomocno = desni-lijevi +1; zivotinja *po_pomocno = new zivotinja[size_pomocno]; int l = lijevi; int s = sredina +1; for (int i = 0; i < size_pomocno; i++) { if (l == sredina+1) { po_pomocno[i] = po[s]; s++; continue; } if (s == desni +1) { po_pomocno[i] = po[l]; l++; continue; } if (po[l].naziv > po[s].naziv) { po_pomocno[i] = po[l]; l++; } else { po_pomocno[i] = po[s]; s++; } } int j = 0; for (int i = lijevi; i <= desni; i++) { po[i] = po_pomocno[j]; j++; } } } void funkcija_sortiraj_cjenovno(Lista *zivot) { cout << "Sortiramo po cijeni." << endl; int br = 0; element tekuci; zivotinja zivotinje; tekuci = FirstL(zivot); while (tekuci != EndL(zivot)) { br++; tekuci = NextL(tekuci, zivot); } zivotinja *po = new zivotinja[br]; tekuci = FirstL(zivot); for (int i = 0; i < br; i++) { zivotinje = RetrieveL(tekuci, zivot); po[i] = zivotinje; tekuci = NextL(tekuci, zivot); } merge_sort_cij(po, 0, br-1); for (int i = 0; i < br; i++) { cout << "Sifra: " << po[i].sifra << ", vrsta: " << po[i].vrs; cout << ", naziv: " << po[i].naziv << ", cijena: " << po[i].cij; cout << ", datum: " << po[i].dat << endl << endl; } } void funkcija_sortiraj_nazivom(Lista *zivot) { cout << "Sortiramo po nazivu." << endl; int br = 0; element tekuci; zivotinja zivotinje; tekuci = FirstL(zivot); while (tekuci != EndL(zivot)) { br++; tekuci = NextL(tekuci, zivot); } zivotinja *po = new zivotinja[br]; tekuci = FirstL(zivot); for (int i = 0; i < br; i++) { zivotinje = RetrieveL(tekuci, zivot); po[i] = zivotinje; tekuci = NextL(tekuci, zivot); } merge_sort_naziv(po, 0, br-1); for (int i = 0; i < br; i++) { cout << "Sifra: " << po[i].sifra << ", vrsta: " << po[i].vrs; cout << ", naziv: " << po[i].naziv << ", cijena: " << po[i].cij; cout << ", datum: " << po[i].dat << endl << endl; } } int main() { Lista zivot; InitL(&zivot); sifra = 1; zivotinja ziv; ziv.sifra = sifra++; ziv.dat = 20121001; ziv.cij = 100; ziv.vrs = "pas"; ziv.naziv = "maltezer"; InsertL(ziv, EndL(&zivot), &zivot); ziv.sifra = sifra++; ziv.dat = 20121101; ziv.cij = 1000; ziv.vrs = "pas"; ziv.naziv = "pekinezer"; InsertL(ziv, EndL(&zivot), &zivot); ziv.sifra = sifra++; ziv.dat = 20111101; ziv.cij = 50; ziv.vrs = "pas"; ziv.naziv = "cau cau"; InsertL(ziv, EndL(&zivot), &zivot); ziv.sifra = sifra++; ziv.dat = 20101111; ziv.cij = 300; ziv.vrs = "macka"; ziv.naziv = "manks"; InsertL(ziv, EndL(&zivot), &zivot); ziv.sifra = sifra++; ziv.dat = 20121223; ziv.cij = 250; ziv.vrs = "macka"; ziv.naziv = "perzijska"; InsertL(ziv, EndL(&zivot), &zivot); funkcija_isp(&zivot); funkcija_dod(&zivot); funkcija_isp(&zivot); funkcija_trazi_dat(&zivot); funkcija_brisi_naziv(&zivot); funkcija_isp(&zivot); funkcija_brisi_vrs(&zivot); funkcija_isp(&zivot); funkcija_sortiraj_cjenovno(&zivot); funkcija_sortiraj_nazivom(&zivot); system("pause"); return 0; }
You need to login to post a comment.
