Posted By

sabramov1 on 11/12/12


Tagged


Versions (?)

Zadatak 1: main_ Abramov_Suzana


 / Published in: C++
 

Kod je vrlo jednostavan. U izborniku mozemo vidjeti zaglavlje listapolje.h i listapokazivac.h. Ovisno kako zelimo da program radi, stavljamo jedan od headera u komenat posto obje implementacije koriste iste funkcije.

  1. #include <iostream>
  2. //#include "lista_polje.h"
  3. #include "lista_pokazivac.h"
  4.  
  5. using namespace std;
  6.  
  7. bool Unos_Elemenata(Lista*);
  8. void Ispis_Elemenata(Lista*);
  9. void Trazi(Lista*);
  10. bool Brisi_Vrsta(Lista*);
  11. bool Brisati_Element(Lista*);
  12. void Sortiranje(Lista*);
  13.  
  14.  
  15. int main() {
  16.  
  17. int Izbor;
  18.  
  19. Lista* Element=new Lista;
  20.  
  21. InitL(Element);
  22.  
  23. do{
  24. system("cls");
  25. cout<<"1: za unos zivotinja"<<endl;
  26. cout<<"2: za ispis zivotinja "<<endl;
  27. cout<<"3: za pretrazivanje"<<endl;
  28. cout<<"4: za brisanje po nazivu"<<endl;
  29. cout<<"5: za brisanje po vrsti"<<endl;
  30. cout<<"6: za sortiranje"<<endl;
  31. cout<<"0: izlaz iz programa "<<endl;
  32. cout<<endl;
  33.  
  34. cout<< endl << "\nIzaberi: ";
  35. cin >> Izbor;
  36.  
  37. if(Izbor==1)
  38. if (Unos_Elemenata(Element)) cout << "Zapis dodan." << endl;
  39.  
  40. if(Izbor==2)
  41. Ispis_Elemenata(Element);
  42.  
  43. if(Izbor==3)
  44. Trazi(Element);
  45.  
  46. if(Izbor==4)
  47. Brisati_Element(Element);
  48.  
  49. if(Izbor==5)
  50. Brisi_Vrsta(Element);
  51.  
  52. if(Izbor==6)
  53. Sortiranje(Element);
  54.  
  55. }while (Izbor!=0);
  56.  
  57. return 0;
  58. }
  59.  
  60. bool Unos_Elemenata(Lista* Glava) {
  61. static int Sifra=100;
  62. zivotinja* Novi=new zivotinja;
  63.  
  64. cout << endl << "Naziv zivotinje: ";
  65. cin.ignore();
  66. cin.getline(Novi->Naziv, 50);
  67. cout << "Vrsta: ";
  68. cin.getline(Novi->Vrsta, 50);
  69. cout << "Datum (DD MM YYYY): ";
  70. cin >> Novi->datum_dostave.Dan >> Novi->datum_dostave.Mjesec >> Novi->datum_dostave.Godina;
  71.  
  72. cout << "Cijena: ";
  73. cin >> Novi->Cijena;
  74. Novi->Sifra=Sifra++;
  75. return InsertL(*Novi, EndL(Glava), Glava);
  76. }
  77.  
  78. bool Usporedi( char* Prvi, char* Drugi, int Broj_1, int Broj_2) {
  79. if(Broj_1!=Broj_2) return false;
  80. for (int i=0; i<Broj_1; i++)
  81. if(Prvi[i]!=Drugi[i]) return false;
  82. return true;
  83. }
  84.  
  85. bool Brisati_Element(Lista* L) {
  86. cout << endl << "Naziv: ";
  87. char Naziv[50];
  88. cin.ignore();
  89. cin.getline(Naziv, 50);
  90.  
  91. zivotinja Zivotinja_1;
  92.  
  93. for(el Trenutni=FirstL(L); Trenutni!=EndL(L); Trenutni=NextL(Trenutni, L)) {
  94. Zivotinja_1=RetrieveL(Trenutni, L);
  95.  
  96. if(Usporedi(Naziv, Zivotinja_1.Naziv, strlen(Naziv), strlen(Zivotinja_1.Naziv))) {
  97. if(DeleteL(LocateL(Zivotinja_1, L), L)==-1) return 0;
  98. else return 1;
  99. }
  100. }
  101. return 0;
  102. }
  103.  
  104. bool Brisi_Vrsta(Lista* L) {
  105. int Brojac=0;
  106. cout << endl << "Vrsta: ";
  107. char Vrsta[50];
  108. cin.ignore();
  109. cin.getline(Vrsta, 50);
  110.  
  111. zivotinja Zivoinja_1;
  112. for(el Trenutni=FirstL(L); Trenutni!=EndL(L); ) {
  113. Zivoinja_1=RetrieveL(Trenutni, L);
  114.  
  115. if(Usporedi(Vrsta, Zivoinja_1.Vrsta, strlen(Vrsta), strlen(Zivoinja_1.Vrsta)))
  116. if(DeleteL(LocateL(Zivoinja_1, L), L)) {
  117. Brojac++;
  118. continue;
  119. }
  120. Trenutni=NextL(Trenutni, L);
  121. }
  122. if(Brojac)
  123. return 1;
  124. else return 0;
  125. }
  126.  
  127. int Broj_Elemenata(Lista* L) {
  128. int Broj=0;
  129. for(el Trenutni=FirstL(L); Trenutni!=EndL(L); Trenutni=NextL(Trenutni, L)) Broj++;
  130. return Broj;
  131. }
  132.  
  133. bool usporedi(zivotinja Element_1, zivotinja Element_2) {
  134. if(Element_1.Cijena<Element_2.Cijena) return true;
  135.  
  136. if(Element_1.Cijena==Element_2.Cijena) {
  137. int temp=(strlen(Element_1.Naziv)<strlen(Element_2.Naziv)) ? strlen(Element_1.Naziv) : strlen(Element_2.Naziv);
  138. for(int I=0; I<temp; I++)
  139. if(Element_1.Naziv[I]>Element_2.Naziv[I]) return false;
  140. else if(Element_1.Naziv[I]<Element_2.Naziv[I]) return true;
  141. }
  142. return false;
  143. }
  144.  
  145. void Merge(zivotinja Polje[], int I, int K, int J) {
  146. int Pol_1=I;
  147. int Pol_2=K+1;
  148. int temp=0;
  149. zivotinja* Drugo_polje=new zivotinja[J-I+1];
  150.  
  151. while(Pol_1<=K && Pol_2<=J)
  152. if(usporedi(Polje[Pol_1], Polje[Pol_2])) Drugo_polje[temp++]=Polje[Pol_1++];
  153. else Drugo_polje[temp++]=Polje[Pol_2++];
  154.  
  155. if(Pol_1>K)
  156. while(Pol_2<=J) Drugo_polje[temp++]=Polje[Pol_2++];
  157. else
  158. while(Pol_1<=K) Drugo_polje[temp++]=Polje[Pol_1++];
  159.  
  160. for(int X=I; X<=J; X++) Polje[X]=Drugo_polje[X-I];
  161.  
  162. delete[] Drugo_polje;
  163. }
  164.  
  165. void Merge_Sort(zivotinja Novo_polje[], int I, int J) {
  166. if(I<J) {
  167. int K=(I+J)/2;
  168. Merge_Sort(Novo_polje, I, K);
  169. Merge_Sort(Novo_polje, K+1, J);
  170. Merge(Novo_polje, I, K, J);
  171. }
  172. }
  173.  
  174. void Merge_Sort(zivotinja Novo_polje[], int Broj) {
  175. Merge_Sort(Novo_polje, 0, Broj-1);
  176. }
  177.  
  178. void Sortiranje(Lista* L){
  179. int Broj_elemenata=Broj_Elemenata(L), I=0;
  180.  
  181. zivotinja* Novi=new zivotinja[Broj_elemenata];
  182. for(el Novo=FirstL(L); Novo!=EndL(L); Novo=NextL(Novo, L))
  183. Novi[I++]=RetrieveL(Novo, L);
  184.  
  185. DeleteAllL(L);
  186.  
  187. Merge_Sort(Novi, Broj_elemenata);
  188.  
  189. for(int I=0; I<Broj_elemenata; I++)
  190. InsertL(Novi[I], FirstL(L), L);
  191.  
  192. delete[] Novi;
  193. }
  194.  
  195. void Ispis_Elemenata(Lista* L) {
  196.  
  197. cout << "Ispis: " << endl;
  198. for (el Trenutni=EndL(L); (Trenutni=PreviousL(Trenutni, L))!=NULL; )
  199. cout << RetrieveL(Trenutni, L) << endl;
  200. cin.ignore();
  201. cout << "\n Pritisni bilo sto za dalje.";
  202. cin.get();
  203. }
  204.  
  205. void Trazi(Lista* L) {
  206. zivotinja Zivotinja;
  207. int Brojac=0;
  208.  
  209. for (el Trenutni=FirstL(L); Trenutni!=EndL(L); Trenutni=NextL(Trenutni, L)) {
  210. Zivotinja=RetrieveL(Trenutni, L);
  211. int Datum=(Zivotinja.datum_dostave.Godina*10000)+(Zivotinja.datum_dostave.Mjesec*100)+Zivotinja.datum_dostave.Dan;
  212.  
  213. if (Datum>20120923){
  214. cout << Zivotinja << endl;
  215. Brojac++;
  216. }
  217. }
  218. cout << "Ukupno zivotinja koje su dostavljenje poslije 23. rujna 2012: " << Brojac;
  219. cin.ignore();
  220. cout << "Pritisni bilo sto za dalje.";
  221. cin.get();
  222. }

Report this snippet  

You need to login to post a comment.