Return to Snippet

Revision: 60581
at November 12, 2012 00:31 by supavkovii


Updated Code
#include <iostream>
#include <cstdlib>
#include <cstring>


//#include "lista_polje2.h"
#include "lista_pokazivaci.h"
using namespace std;

int sifra=10000;

bool dodavanje(zivotinja *lista){
	pomocna pom;
    pom.sifra=sifra++;
	cout<<"Unesite  podatke\n";
	cout<<"Sifra: " << pom.sifra << endl;
	cout<<"Cijena: ";
	cin>>pom.cijena;
	cout<<"Unesite datum u obliku dd/mm/gggg : ";
	cin.ignore();
	cin.getline(pom.datum,15);
	cout<<"Vrsta zivotinje: ";
	cin.getline(pom.vrsta,20);
	cout<<"Naziv zivotinje: ";
	cin.getline(pom.naziv,15);
	tip p=EndL(lista);
	
	/*if(PreviousL(p,lista))
    	p=PreviousL(p,lista);
	while(p!=EndL(lista)){
		if(pom.sifra>RetrieveL(p,lista).sifra){
			tip next=NextL(p,lista);
			if(next==EndL(lista) || pom.sifra<RetrieveL(next,lista).sifra) break;
			p=next;
		}
		else break;
	}*/
	return InsertL(pom,p,lista);
}

void ispis(zivotinja *lista){
	tip p = PreviousL(EndL(lista),lista);
	if(EndL(lista) == FirstL(lista)) return;
	while(1){
		cout<<"-------------------------------------"<<endl;
		pomocna pom=RetrieveL(p,lista);
		cout<<"Sifra: " << pom.sifra << endl;
		cout<<"Vrsta: " << pom.vrsta << endl;
		cout<<"Naziv: " << pom.naziv << endl;
		cout<<"Cijena: " << pom.cijena << endl;
		cout<<"Datum: " << pom.datum << endl;
		if(p==FirstL(lista)) break;
		p = PreviousL(p,lista);
	}
}

void ispis2(zivotinja *lista){
	int br=0;
    tip p=FirstL(lista);
	while(p!=EndL(lista)){
		pomocna pom=RetrieveL(p,lista);
		char dd[3],mm[3],gg[5];
        for(int i=0; i<10; i++){
            if(i<3) dd[i]=pom.datum[i];
            if(i>2 && i<6) mm[i-3]=pom.datum[i];
            if(i>5) gg[i-6]=pom.datum[i];
        }
        gg[5]='/';
        int d,m,g;
        d = atoi(dd);
        m = atoi(mm);
        g = atoi(gg);
		if(g>2012 || (g==2012 && (m>9|| (m==9 && d>23)))){
			cout<<"-------------------------------------"<<endl;
			cout<<"Sifra: " << pom.sifra << endl;
		    cout<<"Vrsta: " << pom.vrsta << endl;
            cout<<"Naziv: " << pom.naziv << endl;
		    cout<<"Cijena: " << pom.cijena << endl;
		    cout<<"Datum: " << pom.datum << endl;
			br++;
		}
		p=NextL(p,lista);
	}
	if(br>0) cout<<"\nUkupno zivotinja dostavljeno nakon 23.9.2012 ima: "<<br<<endl;
	else cout<<"Nema zivotinja dostavljeno nakon 23.9.2012! \n";
}

bool brisanje(zivotinja *lista){
    int n;
    do{
    cout << "\nZa brisanje po vrstama unesite 1, a za brisanje po nazivu zivotinja unesite 2: ";
    cin >> n;
    } while (n!=1 && n!=2);
    if(n==1){
        cout << "Unesite naziv vrste: ";
        char vrsta[20];
        cin.ignore();
        cin.getline(vrsta,20);
        tip p = FirstL(lista);
        while(p!=EndL(lista)){
            if(strcmp(RetrieveL(p,lista).vrsta,vrsta)==0){
			tip pom=PreviousL(p,lista);
			p=pom;
			return DeleteL(pom,lista);
			} 
            p = NextL(p,lista);
        }
    }
    else{
        cout << "Unesite naziv zivotinje: ";
        char naziv[20];
        cin.ignore();
        cin.getline(naziv,20);
        cout << "asdasdas     " << naziv;
        tip p = FirstL(lista);
        while(p!=EndL(lista)){
            if(strcmp(RetrieveL(p,lista).naziv,naziv)==0){
			tip pom=PreviousL(p,lista);
			p=pom;
			return DeleteL(pom,lista);
			}
            p = NextL(p,lista);
        }
    }
    return false;
}

void Spoji(pomocna *A,int i,int k,int j) {
     int I=i, J=k+1, K=0;
     pomocna *B = new pomocna [j-i+1];
     while (I<=k && J<=j)
           if (A[I].cijena>=A[J].cijena)
              memcpy (&B[K++],&A[I++],sizeof(pomocna));
           else 
                memcpy (&B[K++],&A[J++],sizeof(pomocna));
			if (I>k)
       	   while (J<=j)
              memcpy (&B[K++],&A[J++],sizeof(pomocna));
		     else
		         while (I<=k)
		               memcpy (&B[K++],&A[I++],sizeof(pomocna));
		    for (int I=0;I<=j-i;I++) 
		         memcpy (&A[i+I],&B[I],sizeof(pomocna));
		    delete []B;
}
void MSort(pomocna *A,int i, int j) {
     if (i<j) {
        int k=(i+j)/2;
        MSort(A,i,k);
        MSort(A,k+1,j);
        Spoji(A,i,k,j);
     }
}

void MSort(pomocna *A,int N) {
     MSort(A,0,N-1);
}

zivotinja* sortiranje(zivotinja *lista){
	if(EndL(lista)==FirstL(lista)) exit;
	int uk=0,i,j;
	pomocna polje[1000],tmp;
	tip p=FirstL(lista);
	while(p!=EndL(lista)){
		polje[uk].sifra = RetrieveL(p,lista).sifra;
		polje[uk].cijena= RetrieveL(p,lista).cijena;
		strcpy(polje[uk].datum,RetrieveL(p,lista).datum);
		strcpy(polje[uk].vrsta,RetrieveL(p,lista).vrsta);
		strcpy(polje[uk].naziv,RetrieveL(p,lista).naziv);
		uk++;
		p=NextL(p,lista);
	}
	MSort(polje,uk);
	lista->slijedeci=NULL;
	p = FirstL(lista);
	for(int j=0;j<uk;j++)
		InsertL(polje[j],p,lista);
	p = FirstL(lista);
	while(p!=EndL(lista)){
		cout << "\nSifra: " << RetrieveL(p,lista).sifra
		   	 <<"\nCijena:" << RetrieveL(p,lista).cijena
			 << "\nDatum: " << RetrieveL(p,lista).datum
			 << "\nVrsta: " << RetrieveL(p,lista).vrsta
			 << "\nNaziv: " << RetrieveL(p,lista).naziv;
		p=NextL(p,lista);
	}
	return lista;
}


int main(){
    zivotinja *lista=InitL(lista);
    int n;
    while(n!=9){
    	system("cls");
    	cout << "\n1. Dodavanje elementa u listu"
    		 << "\n2. Ispis svih elemenata liste od onog sa najvecom sifrom"
    		 << "\n3. Ispis zivotinja koje dostavljenje nakon 23.9.2012"
    		 << "\n4. Brisanje elementa liste"
    		 << "\n5. Sortiranje elementa liste"
    		 << "\n9. Izlaz"
			 << "\nOdabir: ";
    cin>>n;
    switch(n){
              case 1: if(dodavanje(lista)==true) cout << "\nDodavanje je uspjelo!\n";
                      else cout << "\nDodavanje nije uspjelo!\n";
                      break;
              case 2: ispis(lista); break;
              case 3: ispis2(lista);break;
              case 4: if(brisanje(lista)) cout << "\nBrisanje je uspjelo\n";
                       else cout << "\nBrisanje nije uspjelo\n";
                       break;
              case 5:lista = sortiranje(lista); break;
              };
    system("pause");
    }
    cin >> n;
    return 0;
}

Revision: 60580
at November 11, 2012 22:54 by supavkovii


Initial Code
#include <iostream>
#include <cstdlib>
#include <cstring>


//#include "lista_polje2.h"
#include "lista_pokazivaci.h"
using namespace std;

int sifra=10000;

bool dodavanje(zivotinja *lista){
	pomocna pom;
    pom.sifra=sifra++;
	cout<<"Unesite  podatke\n";
	cout<<"Sifra: " << pom.sifra << endl;
	cout<<"Cijena: ";
	cin>>pom.cijena;
	cout<<"Unesite datum u obliku dd/mm/gggg : ";
	cin.ignore();
	cin.getline(pom.datum,15);
	cout<<"Vrsta zivotinje: ";
	cin.getline(pom.vrsta,20);
	cout<<"Naziv zivotinje: ";
	cin.getline(pom.naziv,15);
	tip p=EndL(lista);
	
	/*if(PreviousL(p,lista))
    	p=PreviousL(p,lista);
	while(p!=EndL(lista)){
		if(pom.sifra>RetrieveL(p,lista).sifra){
			tip next=NextL(p,lista);
			if(next==EndL(lista) || pom.sifra<RetrieveL(next,lista).sifra) break;
			p=next;
		}
		else break;
	}*/
	return InsertL(pom,p,lista);
}

void ispis(zivotinja *lista){
	tip p = PreviousL(EndL(lista),lista);
	if(EndL(lista) == FirstL(lista)) return;
	while(1){
		cout<<"-------------------------------------"<<endl;
		pomocna pom=RetrieveL(p,lista);
		cout<<"Sifra: " << pom.sifra << endl;
		cout<<"Vrsta: " << pom.vrsta << endl;
		cout<<"Naziv: " << pom.naziv << endl;
		cout<<"Cijena: " << pom.cijena << endl;
		cout<<"Datum: " << pom.datum << endl;
		if(p==FirstL(lista)) break;
		p = PreviousL(p,lista);
	}
}

void ispis2(zivotinja *lista){
	int br=0;
    tip p=FirstL(lista);
	while(p!=EndL(lista)){
		pomocna pom=RetrieveL(p,lista);
		char dd[2],mm[2],gg[4];
        for(int i=0; i<10; i++){
            if(i<2) dd[i]=pom.datum[i];
            if(i>2 && i<5) mm[i-3]=pom.datum[i];
            if(i>5) gg[i-6]=pom.datum[i];
        }
        int d,m,g;
        d = atoi(dd);
        m = atoi(mm);
        g = atoi(gg);
		if(g>2012|| (g==2012 && (m>9|| (m==9 && d>23)))){
			cout<<"-------------------------------------"<<endl;
			cout<<"Sifra: " << pom.sifra << endl;
		    cout<<"Vrsta: " << pom.vrsta << endl;
            cout<<"Naziv: " << pom.naziv << endl;
		    cout<<"Cijena: " << pom.cijena << endl;
		    cout<<"Datum: " << pom.datum << endl;
			br++;
		}
		p=NextL(p,lista);
	}
	if(br>0) cout<<"\nUkupno zivotinja dostavljeno nakon 23.9.2012 ima: "<<br<<endl;
	else cout<<"Nema zivotinja dostavljeno nakon 23.9.2012! \n";
}

bool brisanje(zivotinja *lista){
    int n;
    do{
    cout << "\nZa brisanje po vrstama unesite 1, a za brisanje po nazivu zivotinja unesite 2: ";
    cin >> n;
    } while (n!=1 && n!=2);
    if(n==1){
        cout << "Unesite naziv vrste: ";
        char vrsta[20];
        cin.ignore();
        cin.getline(vrsta,20);
        tip p = FirstL(lista);
        while(p!=EndL(lista)){
            if(strcmp(RetrieveL(p,lista).vrsta,vrsta)==0){
			tip pom=PreviousL(p,lista);
			p=pom;
			return DeleteL(pom,lista);
			} 
            p = NextL(p,lista);
        }
    }
    else{
        cout << "Unesite naziv zivotinje: ";
        char naziv[20];
        cin.ignore();
        cin.getline(naziv,20);
        cout << "asdasdas     " << naziv;
        tip p = FirstL(lista);
        while(p!=EndL(lista)){
            if(strcmp(RetrieveL(p,lista).naziv,naziv)==0){
			tip pom=PreviousL(p,lista);
			p=pom;
			return DeleteL(pom,lista);
			}
            p = NextL(p,lista);
        }
    }
    return false;
}

void Spoji(pomocna *A,int i,int k,int j) {
     int I=i, J=k+1, K=0;
     pomocna *B = new pomocna [j-i+1];
     while (I<=k && J<=j)
           if (A[I].cijena>=A[J].cijena)
              memcpy (&B[K++],&A[I++],sizeof(pomocna));
           else 
                memcpy (&B[K++],&A[J++],sizeof(pomocna));
			if (I>k)
       	   while (J<=j)
              memcpy (&B[K++],&A[J++],sizeof(pomocna));
		     else
		         while (I<=k)
		               memcpy (&B[K++],&A[I++],sizeof(pomocna));
		    for (int I=0;I<=j-i;I++) 
		         memcpy (&A[i+I],&B[I],sizeof(pomocna));
		    delete []B;
}
void MSort(pomocna *A,int i, int j) {
     if (i<j) {
        int k=(i+j)/2;
        MSort(A,i,k);
        MSort(A,k+1,j);
        Spoji(A,i,k,j);
     }
}

void MSort(pomocna *A,int N) {
     MSort(A,0,N-1);
}

zivotinja* sortiranje(zivotinja *lista){
	if(EndL(lista)==FirstL(lista)) exit;
	int uk=0,i,j;
	pomocna polje[1000],tmp;
	tip p=FirstL(lista);
	while(p!=EndL(lista)){
		polje[uk].sifra = RetrieveL(p,lista).sifra;
		polje[uk].cijena= RetrieveL(p,lista).cijena;
		strcpy(polje[uk].datum,RetrieveL(p,lista).datum);
		strcpy(polje[uk].vrsta,RetrieveL(p,lista).vrsta);
		strcpy(polje[uk].naziv,RetrieveL(p,lista).naziv);
		uk++;
		p=NextL(p,lista);
	}
	MSort(polje,uk);
	lista->slijedeci=NULL;
	p = FirstL(lista);
	for(int j=0;j<uk;j++)
		InsertL(polje[j],p,lista);
	p = FirstL(lista);
	while(p!=EndL(lista)){
		cout << "\nSifra: " << RetrieveL(p,lista).sifra
		   	 <<"\nCijena:" << RetrieveL(p,lista).cijena
			 << "\nDatum: " << RetrieveL(p,lista).datum
			 << "\nVrsta: " << RetrieveL(p,lista).vrsta
			 << "\nNaziv: " << RetrieveL(p,lista).naziv;
		p=NextL(p,lista);
	}
	return lista;
}


int main(){
    zivotinja *lista=InitL(lista);
    int n;
    while(n!=9){
    	system("cls");
    	cout << "\n1. Dodavanje elementa u listu"
    		 << "\n2. Ispis svih elemenata liste od onog sa najvecom sifrom"
    		 << "\n3. Ispis zivotinja koje dostavljenje nakon 23.9.2012"
    		 << "\n4. Brisanje elementa liste"
    		 << "\n5. Sortiranje elementa liste"
    		 << "\n9. Izlaz"
			 << "\nOdabir: ";
    cin>>n;
    switch(n){
              case 1: if(dodavanje(lista)==true) cout << "\nDodavanje je uspjelo!\n";
                      else cout << "\nDodavanje nije uspjelo!\n";
                      break;
              case 2: ispis(lista); break;
              case 3: ispis2(lista);break;
              case 4: if(brisanje(lista)) cout << "\nBrisanje je uspjelo\n";
                       else cout << "\nBrisanje nije uspjelo\n";
                       break;
              case 5:lista = sortiranje(lista); break;
              };
    system("pause");
    }
    cin >> n;
    return 0;
}

Initial URL


Initial Description
Glavni program s evidencijom kucnih ljubimaca

Initial Title
glavni program.cpp

Initial Tags


Initial Language
C++