/ Published in: C++
Ovdje možete vidjeti glavni dio mog programa.
Expand |
Embed | Plain Text
#include <iostream> #include <cstring> #include "lista_pokazivaci.h" using namespace std; int sifra = 1; int dodaj_zivotinju(Lista *l) { zivotinja ziv; ziv.sifra = sifra; cout << " Zivotinja " << "[" << sifra << "]" << endl << endl; cout << " Sifra: "; cout << ziv.sifra <<endl; cout << " Vrsta: "; cin >> ziv.vrsta; cout << " Naziv: "; cin >> ziv.naziv; cout << " Datum (YYYYMMDD): "; cin >> ziv.datum; cout << " Cijenu: "; cin >> ziv.cijena; sifra++; if(InsertL(ziv, EndL(l), l) == true) { return 1; } else { return 0; }} void ispisi_zivotinje(Lista *l) { element tekuci = EndL(l); zivotinja ziv; while (1) { tekuci = PreviousL(tekuci, l); if (tekuci == PreviousL(FirstL(l), l)) { return; } ziv = RetrieveL(tekuci, l); cout << ziv.sifra << endl; cout << ziv.vrsta << endl; cout << ziv.naziv << endl; cout << ziv.datum << endl; cout << ziv.cijena << endl; cout << endl; }} int pretrazi(Lista *l) { int ukupno = 0; element tekuci = FirstL(l); zivotinja vrijeme; while (tekuci != EndL(l)) { vrijeme = RetrieveL(tekuci, l); if (vrijeme.datum > "20120923") { ukupno++; cout << vrijeme.sifra << endl; cout << vrijeme.vrsta << endl; cout << vrijeme.naziv << endl; cout << vrijeme.datum << endl; cout << vrijeme.cijena << endl; cout << endl; } tekuci = NextL(tekuci, l); } return ukupno; } int brisi_sve_naziv(Lista *l) { string naziv_zivotinje; cout << "Unesi naziv zivotinje koju zelis obrisati: "; cin >> naziv_zivotinje; int uspjeh = 0; element tekuci = FirstL(l); zivotinja obrisati; while (tekuci != EndL(l)) { obrisati = RetrieveL(tekuci, l); if (obrisati.naziv == naziv_zivotinje) { DeleteL(LocateL(obrisati, l), l); uspjeh = 1; } else { tekuci = NextL(tekuci, l); }} return uspjeh; } void sort_po_cijena(zivotinja polje[], int lijevi, int desni) { int sredina = (lijevi + desni) / 2; zivotinja 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 { sort_po_cijena(polje, lijevi, sredina); sort_po_cijena(polje, sredina +1, desni); int size_pomocno = desni-lijevi +1; zivotinja *polje_pomocno = new zivotinja[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 sort_po_nazivu(zivotinja polje[], int lijevi, int desni) { int sredina = (lijevi + desni) / 2; zivotinja 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 { sort_po_nazivu(polje, sredina +1, desni); int size_pomocno = desni-lijevi +1; zivotinja *polje_pomocno = new zivotinja[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++; }}} int brisi_sve_vrsta(Lista *l) { string vrsta; cout << "Unesi vrstu zivotinja koje zelis obrisati: "; cin >> vrsta; int uspjeh = 0; element tekuci = FirstL(l); zivotinja obrisati; while (tekuci != EndL(l)) { obrisati = RetrieveL(tekuci, l); if (obrisati.vrsta == vrsta) { DeleteL(tekuci, l); uspjeh = 1; } else { tekuci = NextL(tekuci, l); }} return uspjeh; } void sortiranje(Lista *l) { int brojac; brojac = 0; element pomocna; pomocna = FirstL(l); while (pomocna != EndL(l)) { brojac++; pomocna = NextL(pomocna, l); } zivotinja *polje = new zivotinja[brojac]; pomocna = FirstL(l); for (int i = 0; i < brojac; i++) { polje[i] = RetrieveL(pomocna, l); pomocna = NextL(pomocna, l); } DeleteAll(l); sort_po_nazivu(polje, 0, brojac-1); for (int i = 0; i < brojac; i++) { InsertL(polje[i], EndL(l), l); } sort_po_cijena(polje, 0, brojac-1); DeleteAll(l); for (int i = 0; i < brojac; i++) { InsertL(polje[i], EndL(l), l); } cout << " Sortiranje po cijeni:" << endl << endl; sort_po_cijena(polje, 0, brojac-1); DeleteAll(l); for (int i = 0; i < brojac; i++) { InsertL(polje[i], EndL(l), l); } ispisi_zivotinje(l); cout << " Sortiranje po nazivu" << endl << endl; sort_po_nazivu(polje, 0, brojac-1); DeleteAll(l); for (int i = 0; i < brojac; i++) { InsertL(polje[i], EndL(l), l); } ispisi_zivotinje(l); return; } int main() { Lista evidencija; InitL(&evidencija); int odg; int izbor; do { system("cls"); cout << "\n\t/-/-/-/-/-/-/-/-/-Izbornik-/-/-/-/-/-/-/-/-/-/" << endl; cout << "\n\t\t1. Upis zivotinja"; cout << "\n\t\t2. Ispis zivotinja"; cout << "\n\t\t3. Pratrazivanje zivotinja"; cout << "\n\t\t4. Brisanje zivotinja po nazivu"; cout << "\n\t\t5. Brisanje zivotinja po vrsti"; cout << "\n\t\t6. Sortiranje zivotinja"; cout << "\n\t\t7. Kraj programa" <<endl; cout << "\n\t/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/"; cout << endl <<"\n\t\tVas izbor: "; cin >> izbor; switch ( izbor) { case 1: system ("cls"); cout << " \n\t\t\t\tUPIS ZIVOTINJA " << endl; do { cout << endl << endl; cout <<" Koliko zivotinja zelis unesti? "; cin >> odg ; if ( odg < 5 ) cout << endl << " Pogresan unos, pokusajte ponovno! " <<endl; } while ( odg < 5 ); for ( int i = 0 ; i < odg ; i ++ ) { cout << endl; dodaj_zivotinju(&evidencija); } cout << endl; break; case 2: system ("cls"); cout << " \n\t\t\t\tISPIS ZIVOTINJA " << endl; cout << " \t\t\t\t ( unatrag ) " << endl << endl; ispisi_zivotinje(&evidencija); system ("pause"); break; case 3: system ("cls"); cout << " \n\t\t\t PRETRAZIVANJE ZIVOTINJA " << endl; cout << " \t\t\tdatum dostave >= 24.09.2012." << endl << endl; pretrazi(&evidencija); system ("pause"); break; case 4: system ("cls"); cout << " \n\t\t\t\tBRISANJE ZIVOTINJA " << endl; cout << " \t\t\t\t ( po nazivu ) " << endl << endl << endl; brisi_sve_naziv(&evidencija); system ("pause"); break; case 5: system ("cls"); cout << " \n\t\t\t\tBRISANJE ZIVOTINJA " << endl; cout << " \t\t\t\t ( po vrsti ) " << endl << endl << endl; brisi_sve_vrsta(&evidencija); system ("pause"); break; case 6: system ("cls"); cout << " \n\t\t\t\tSORTIRANJE ZIVOTINJA " << endl; sortiranje(&evidencija); system ("pause"); break; case 7: system ("cls"); break; default: cout <<" Pogresan unos. Pokusajte ponovno ! " << endl; }} while ( izbor !=7); return 0; system ("pause"); }
Comments
Subscribe to comments
You need to login to post a comment.

Ovaj koda posjedue neke različitosti u odnosu na moj kod. U main funkciji korištene su neke funkcije koje ja nisam realizirao na taj način, a u datotekama zaglavlja fukcije su također realzirane drugačije.