Revision: 60633
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 12, 2012 03:55 by tdoric
Initial Code
#include <iostream>
#include <cstring>
#include "lista_polje.h"
//#include "lista_pokazivac.h"
using namespace std;
int br_elem = 0;
int kod = 1000;
int upis()
{
ljubimac tekuci, prethodni = RetreiveL(PreviousL(EndL(list), list), list);
tekuci.kod = kod;
cout << "Dan: ";
cin >> tekuci.d;
cout << "Mjesec: ";
cin >> tekuci.m;
cout << "Godina: ";
cin >> tekuci.g;
cout << "Sifra: " << tekuci.kod << endl;
cout << "Vrsta: ";
cin.ignore();
cin.getline(tekuci.vrsta,50);
cout << "Naziv: ";
cin.getline(tekuci.naziv,50);
cout << "cijena: ";
cin >> tekuci.cijena;
InsertL(tekuci, EndL(list), list);
br_elem++;
kod++;
return 1;
}
void pretrazivanje_liste()
{
int uk = 0;
element tekuci = FirstL(list);
ljubimac trazeni;
while(tekuci != EndL(list))
{
trazeni = RetreiveL(tekuci, list);
if((trazeni.g==2012 && trazeni.m==9 && trazeni.d>23) || trazeni.g>2012 || trazeni.g==2012&&trazeni.m>9)
{
cout << "Sifra: " << trazeni.kod << endl;
cout << "Vrsta: " << trazeni.vrsta << endl;
cout << "Naziv: " << trazeni.naziv << endl;
cout << "Cijena: " << trazeni.cijena << endl;
cout << "Datum dostave: " << trazeni.d << "."
<< trazeni.m << "."
<< trazeni.g << "." << endl;
cout << "---------------------------" << endl;
uk++;
}
tekuci = NextL(tekuci, list);
}
cout << "Ukupan broj zivotinja dostavljenih nakon 23.9.2012. je: " << uk;
}
void ispis_liste()
{
element zadnji = PreviousL(EndL(list), list);
ljubimac tekuci;
if(EndL(list) == FirstL(list))
{
cout << "Lista je prazna";
return;
}
while(zadnji >= FirstL(list))
{
tekuci = RetreiveL(zadnji, list);
cout << "Sifra: " << tekuci.kod << endl;
cout << "Vrsta: " << tekuci.vrsta << endl;
cout << "Naziv: " << tekuci.naziv << endl;
cout << "Cijena: " << tekuci.cijena << endl;
cout << "Datum dostave: " << tekuci.d << "."
<< tekuci.m << "."
<< tekuci.g << "." << endl;
cout << "---------------------------" << endl;
zadnji = PreviousL(zadnji, list);
}
}
int brisanje_po_vrsti()
{
char ime[50];
bool del = false;
element trazena;
cout << "Vrsta zivotinje koju zelite obrisati: ";
cin.ignore();
cin.getline(ime,50);
while(1)
{
trazena = LocateL(ime, list);
if(trazena == EndL(list))
break;
DeleteL(trazena, list);
del = true;
br_elem--;
}
if(!del)
return 0;
else
return 1;
}
int brisanje_po_nazivu_u_listi()
{
char ime[50];
bool del = false;
element trazena;
cout << "Naziv zivotinje koju zelite obrisati: ";
cin.ignore();
cin.getline(ime,50);
while(1)
{
trazena = LocateL(ime, list);
if(trazena == EndL(list))
break;
DeleteL(trazena, list);
del = true;
br_elem--;
}
if(!del)
return 0;
else
return 1;
}
void sortiranje(ljubimac *a, ljubimac *b, int l, int r)
{
int i, j, k, m;
if(l < r)
{
m = (r+l) / 2;
sortiranje(a, b, l, m);
sortiranje(a, b, m+1, r);
i = l; j = m+1; k = l;
while((i <= m) && (j <= r))
{
if(a[i].cijena>a[j].cijena || ((a[i].cijena==a[j].cijena)&&(strncmp(a[i].naziv, a[j].naziv, sizeof(a[i].naziv))>0)))
memcpy(&b[k++], &a[i++], sizeof(ljubimac));
else
memcpy(&b[k++], &a[j++], sizeof(ljubimac));
}
while(i <= m)
memcpy(&b[k++], &a[i++], sizeof(ljubimac));
while(j <= r)
memcpy(&b[k++], &a[j++], sizeof(ljubimac));
for(k = l; k <= r; k++)
memcpy(&a[k], &b[k], sizeof(ljubimac));
}
}
void sortiranje2()
{
ljubimac *a = new ljubimac[br_elem];
element tekuci = FirstL(list);
int i = 0;
while(tekuci != EndL(list))
{
a[i] = RetreiveL(tekuci, list);
tekuci = NextL(tekuci, list);
i++;
}
ljubimac *b = new ljubimac[br_elem];
sortiranje(a, b, 0, br_elem-1);
DeleteAllL(list);
InitL(list);
for(i=0; i<br_elem; i++)
InsertL(a[i], EndL(list), list);
delete []a;
delete []b;
}
int main()
{
InitL(list);
int izbor, rez;
do
{
cout << "1. Upis u listu" << endl;
cout << "2. Ispis liste" << endl;
cout << "3. Zivotinje dostavljene nakon 23.9.2012." << endl;
cout << "4. Brisanje prema nazivu" << endl;
cout << "5. Brisanje prema vrsti" << endl;
cout << "6. Sortirano silazno, prema cijeni i nazivu" << endl;
cout << "0. Izlaz iz programa" << endl << endl;
cin >> izbor;
switch(izbor)
{
case 1:
cout << endl << "1. Dodavanje zapisa prema rastucoj sifri" << endl;
rez = upis();
if(rez == 1)
{
cout << "Uspjesno!!!";
}
else
cout << "Neuspjesno!!!";
cout << endl << endl;
break;
case 2:
cout << endl << "2. Ispis liste" << endl;
ispis_liste();
cout << endl << endl;
break;
case 3:
cout << endl << "3. Zivotinje dostavljene nakon 23.9.2012." << endl;
pretrazivanje_liste();
cout << endl << endl;
break;
case 4:
cout << endl << "4. Brisanje iz liste prema nazivu" << endl;
rez = brisanje_po_nazivu_u_listi();
if(rez == 1)
cout << "Uspjesno!!!";
else
cout << "Neuspjesno!";
cout << endl << endl;
break;
case 5:
cout << endl << "5. Brisanje prema vrsti" << endl;
rez = brisanje_po_vrsti();
if(rez == 1)
cout << "Uspjesno!!!";
else
cout << "Neuspjesno!";
cout << endl << endl;
break;
case 6:
cout << endl << "6. Sortirano silazno prema nazivu i cijeni" << endl;
sortiranje2();
cout << endl << endl;
break;
default:
cout << endl << "Pogreska\n Unesite ponovo!" << endl << endl;
}
} while(izbor != 0);
return 0;
}
Initial URL
Initial Description
moj zadatak iz struktura podataka
Initial Title
glavni_program_lista_zivotinje
Initial Tags
Initial Language
C++