Return to Snippet

Revision: 60633
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++