/ Published in: C++
Program nakon unijetih podataka o zivotinjama u listu, nudi niz opcija nad istom. U program su ukljucene datoteke zaglavlja listapolje.h i listapokazivac.h u kojima se nalaze implementacije liste pomocu polja i pokazivaca.
Expand |
Embed | Plain Text
#include <iostream> #include <ctime> #include <string> //#include "lista_pokazivac.h" #include "lista_polje.h" using namespace std; int a_zadatak (Lista *lista) { kucni_ljubimci nova; cout << "Naziv: "; cin >> nova.naziv; cout << "Vrsta: "; cin >> nova.vrsta; cout << "Cijena: "; int cijena = time(NULL); nova.cijena = rand() % 1000; cout << nova.cijena << endl; cout << "Datum (u obliku: gggg/mm/dd) :"; cin >> nova.datum; int sifra = time(NULL); srand(sifra); nova.sifra = rand(); cout << "Sifra: " << nova.sifra << endl << endl; bool uspjeh = true; uspjeh = InsertL(nova, EndL(lista) , lista); if (uspjeh) { return 1; } else { return 0; } } void a2_zadatak (Lista *lista) { element tek; kucni_ljubimci za_ispis; tek = EndL(lista); do { tek = PreviousL(tek, lista); za_ispis = RetrieveL(tek, lista); cout << "Naziv: " << za_ispis.naziv << endl; cout << "Vrsta: " << za_ispis.vrsta << endl; cout << "Datum: " << za_ispis.datum << endl; cout << "Cijena: " << za_ispis.cijena << endl; cout << "Sifra: " << za_ispis.sifra << endl; cout << endl; } while (tek != FirstL(lista)); } void b_zadatak (Lista *lista) { int brojac = 0; element tek = FirstL(lista); kucni_ljubimci za_ispis; while (tek != EndL(lista)) { za_ispis = RetrieveL(tek, lista); if (za_ispis.datum > "2012/09/23") { cout << "Naziv: " << za_ispis.naziv << endl; cout << "Vrsta: " << za_ispis.vrsta << endl; cout << "Datum: " << za_ispis.datum << endl; cout << "Cijena: " << za_ispis.cijena << endl; cout << "Sifra: " << za_ispis.sifra << endl; cout << endl; brojac = brojac +1; } tek = NextL(tek, lista); } cout << "Ukupan broj zivotinja dostavljenih nakon 23.9.2012.: " << brojac << endl; } int c_zadatak_naziv (Lista *lista) { element tek = FirstL(lista); kucni_ljubimci za_brisanje; bool brisanje = false; cout << "Naziv zivotinja koje zelite obrisati iz evidencije: "; string naziv; cin >> naziv; element pomocni; while (tek != EndL(lista)) { za_brisanje = RetrieveL(tek, lista); if (za_brisanje.naziv == naziv) { pomocni = tek; tek = FirstL(lista); DeleteL(pomocni, lista); brisanje = true; } tek = NextL(tek, lista); } if (brisanje) { return 1; } else { return 0; } } int c_zadatak_vrsta (Lista *lista) { element tek = FirstL(lista); kucni_ljubimci za_brisanje; bool brisanje = false; cout << "Vrsta zivotinja koje zelite obrisati iz evidencije: "; string vrsta; cin >> vrsta; while (tek != EndL(lista)) { za_brisanje = RetrieveL(tek, lista); if (za_brisanje.vrsta == vrsta) { DeleteL(tek, lista); brisanje = true; } else { tek = NextL(tek, lista); } } if (brisanje) { return 1; } else { return 0; } } void ispis_obican (Lista *lista) { element tek; kucni_ljubimci za_ispis; tek = FirstL(lista); while (tek != EndL(lista)) { za_ispis = RetrieveL(tek, lista); cout << "Naziv: " << za_ispis.naziv << endl; cout << "Vrsta: " << za_ispis.vrsta << endl; cout << "Datum: " << za_ispis.datum << endl; cout << "Cijena: " << za_ispis.cijena << endl; cout << "Sifra: " << za_ispis.sifra << endl; cout << endl; tek = NextL(tek, lista); } } void d_zadatak_cijena (kucni_ljubimci polje[], int lijevi, int desni) { int sredina = (lijevi + desni) / 2; kucni_ljubimci temp; if (desni - lijevi == 1) { if (polje[desni].cijena > polje[lijevi].cijena) { temp = polje[desni]; polje[desni] = polje[lijevi]; polje[lijevi] = temp; return; } } else if (desni == lijevi) { return; } else { d_zadatak_cijena(polje, lijevi, sredina); d_zadatak_cijena(polje, sredina +1, desni); int size_pomocno = desni-lijevi +1; kucni_ljubimci *polje_pomocno = new kucni_ljubimci[size_pomocno]; int l = lijevi; int s = sredina +1; for (int i = 0; i < size_pomocno; i++) { if (l == sredina+1) { polje_pomocno[i] = polje[s]; s++; continue; } if (s == desni +1) { polje_pomocno[i] = polje[l]; l++; continue; } if (polje[l].cijena > polje[s].cijena) { polje_pomocno[i] = polje[l]; l++; } else { polje_pomocno[i] = polje[s]; s++; } } int j = 0; for (int i = lijevi; i <= desni; i++) { polje[i] = polje_pomocno[j]; j++; } } } void d_zadatak_naziv (kucni_ljubimci polje[], int lijevi, int desni) { int sredina = (lijevi + desni) / 2; kucni_ljubimci temp; if (desni - lijevi == 1) { if (polje[desni].naziv > polje[lijevi].naziv) { temp = polje[desni]; polje[desni] = polje[lijevi]; polje[lijevi] = temp; return; } } else if (desni == lijevi) { return; } else { d_zadatak_naziv(polje, lijevi, sredina); d_zadatak_naziv(polje, sredina +1, desni); int size_pomocno = desni-lijevi +1; kucni_ljubimci *polje_pomocno = new kucni_ljubimci[size_pomocno]; int l = lijevi; int s = sredina +1; for (int i = 0; i < size_pomocno; i++) { if (l == sredina+1) { polje_pomocno[i] = polje[s]; s++; continue; } if (s == desni +1) { polje_pomocno[i] = polje[l]; l++; continue; } if (polje[l].naziv > polje[s].naziv) { polje_pomocno[i] = polje[l]; l++; } else { polje_pomocno[i] = polje[s]; s++; } } int j = 0; for (int i = lijevi; i <= desni; i++) { polje[i] = polje_pomocno[j]; j++; } } } void d_zadatak (Lista *lista) { int ukupno = 0; element tek = FirstL(lista); while (tek != EndL(lista)) { tek = NextL(tek, lista); ukupno += 1; } kucni_ljubimci *pomocno_polje = new kucni_ljubimci[ukupno]; tek = FirstL(lista); for (int i = 0; i < ukupno; i++) { pomocno_polje[i] = RetrieveL(tek, lista); tek = NextL(tek, lista); } d_zadatak_naziv(pomocno_polje, 0, ukupno-1); DeleteAll(lista); for (int i = 0; i < ukupno; i++) { InsertL(pomocno_polje[i], EndL(lista), lista); } cout << "-Ispis silazno sortirane liste-" << endl << endl; ispis_obican(lista); } void d2_zadatak(Lista *lista) { int ukupno = 0; element tek = FirstL(lista); while (tek != EndL(lista)) { tek = NextL(tek, lista); ukupno += 1; } kucni_ljubimci *pomocno_polje = new kucni_ljubimci[ukupno]; tek = FirstL(lista); for (int i = 0; i < ukupno; i++) { pomocno_polje[i] = RetrieveL(tek, lista); tek = NextL(tek, lista); } d_zadatak_cijena(pomocno_polje, 0, ukupno-1); DeleteAll(lista); for (int i = 0; i < ukupno; i++) { InsertL(pomocno_polje[i], EndL(lista), lista); } cout << "-Ispis silazno sortirane liste-" << endl << endl; ispis_obican(lista); } int main() { Lista kucni_ljubimci; InitL(&kucni_ljubimci); int unos, izbor; bool prvi = false; cout << "Dobar dan! Dobro dosli u trgovinu kucnih ljubimaca. " << endl; do { cout << endl << "-----------------------------IZBORNIK-----------------------------" << endl; cout << "1. Unos zivotinja" << endl; cout << "2. Ispis sadrzaja" << endl; cout << "3. Pretrazivanje i ispis zivotinja dostavljenih nakon 23.9.2012." << endl; cout << "4. Brisanje zivotinja prema nazivu" << endl; cout << "5. Brisanje zivotinja prema vrsti" << endl; cout << "6. Sortiranje prema nazivu zivotinja" << endl; cout << "7. Sortiranje prema cijeni zivotinja" << endl; cout << "8. Izlaz iz programa" << endl; cin >> izbor; cout << endl; switch (izbor) { case 1: prvi = true; cout << "----------Unos zivotinja----------" << endl << endl; do { cout << "Koliko zapisa za evidentiranje kucnih ljubimaca zelite unijeti? <min 5> " ; cin >> unos; } while (unos < 5); cout << endl << endl; for (int i=0; i<unos; i++) { a_zadatak(&kucni_ljubimci); } cout << endl; break; case 2: if (prvi == false) { cout << "Prvo morate odabrati mogucnost 1. " << endl; break; } else { cout << "----------Ispis sadrzaja----------" << endl << endl; cout << "-Ispis unijetih zivotinja unatrag-" << endl << endl; a2_zadatak(&kucni_ljubimci); cout << endl; break; } case 3: if (prvi == false) { cout << "Prvo morate odabrati mogucnost 1. " << endl; break; } else { cout << "----------Ispis zivotinja dostavljenih nakon 23.9.2012.----------" << endl << endl; b_zadatak(&kucni_ljubimci); cout << endl; break; } case 4: if (prvi == false) { cout << "Prvo morate odabrati mogucnost 1. " << endl; break; } else { cout << "----------Brisanje zivotinja prema nazivu----------" << endl << endl; c_zadatak_naziv(&kucni_ljubimci); cout << endl; cout << "Nakon brisanja, u evidenciji se nalaze slijedece zivotinje: " << endl << endl; ispis_obican(&kucni_ljubimci); cout << endl; break; } case 5: if (prvi == false) { cout << "Prvo morate odabrati mogucnost 1. " << endl; break; } else { cout << "----------Brisanje zivotinja po vrsti----------" << endl; c_zadatak_vrsta(&kucni_ljubimci); cout << endl; cout << "Nakon brisanja, u evidenciji se nalaze slijedece zivotinje: " << endl << endl; ispis_obican(&kucni_ljubimci); cout << endl; break; } case 6: if (prvi == false) { cout << "Prvo morate odabrati mogucnost 1. " << endl; break; } else { cout << "----------Sortiranje zivotinja prema nazivu----------" << endl << endl; d_zadatak(&kucni_ljubimci); break; } case 7: if (prvi == false) { cout << "Prvo morate odabrati mogucnost 1. " << endl; break; } else { cout << "----------Sortiranje zivotinja prema cijeni----------" << endl << endl; d2_zadatak(&kucni_ljubimci); break; } case 8: break; default: cout << "Pogresan unos!" << endl; } } while (izbor !=8); system("pause"); return 0; }
You need to login to post a comment.
