Posted By

fijelicic1 on 11/12/12


Tagged

Liste pokazivaci implementacija


Versions (?)

glavni program


 / Published in: C++
 

glavni program

  1. #include <iostream>
  2. #include<string>
  3.  
  4. using namespace std;
  5. #include "lista_polja.h"
  6.  
  7.  
  8.  
  9. void unos(lista *popis,int brojac) {
  10. zivotinja pomocni;
  11. pomocni.sifra=brojac;
  12. cout<<"Naziv zivotinje: "<<endl;
  13. cin.ignore();
  14. cin.getline(pomocni.naziv, 50);
  15. cout<<"Vrsta zivotinje: "<<endl;
  16. cin.getline(pomocni.vrsta, 50);
  17. cout<<"Unesite dan, mjesec i godinu dostave: "<<endl;
  18. cin>>pomocni.d;
  19. cin>>pomocni.m;
  20. cin>>pomocni.y;
  21. cout<<"Unesite cijenu: "<<endl;
  22. cin>>pomocni.cijena;
  23.  
  24. element trenutni;
  25. trenutni=FirstL(popis);
  26. zivotinja trenutno;
  27. while(trenutni!=EndL(popis)) {
  28. trenutno=RetrieveL(trenutni, popis);
  29. if (trenutno.sifra<pomocni.sifra) break;
  30. trenutni=NextL(trenutni, popis);
  31. }
  32. InsertL(pomocni,trenutni,popis);
  33. cout<<"Podaci su uspjesno umetnuti u listu."<<endl<< endl;
  34. }
  35.  
  36. void ispis(lista popis){
  37.  
  38. element trenutni;
  39. trenutni = FirstL(&popis);
  40. zivotinja trenutno;
  41. trenutno = RetrieveL(trenutni, &popis);
  42. cout<<"----------------------------------------------------------"<<endl;
  43. cout<<" LISTA ZAPISA " << endl;
  44. cout<<"----------------------------------------------------------"<<endl<<endl;
  45.  
  46. while (trenutni!=EndL(&popis)) {
  47. cout<< "Sifra: "<<trenutno.sifra<<endl;
  48. cout<< "Naziv: "<<trenutno.naziv<<endl;
  49. cout<< "Vrsta zivotinje: "<<trenutno.vrsta<<endl;
  50. cout<< "Datum dostave: " << trenutno.d <<"."<<trenutno.m<<"."<<trenutno.y<<"."<<endl;
  51. cout<< "Cijena: "<<trenutno.cijena<<endl;
  52. trenutni=NextL(trenutni, &popis);
  53. if (trenutni==EndL(&popis)) break;
  54. trenutno = RetrieveL(trenutni, &popis);
  55. }
  56. }
  57.  
  58. void datum(lista *popis) {
  59. element trenutni;
  60. trenutni=FirstL(popis);
  61. zivotinja trenutno;
  62. trenutno=RetrieveL(trenutni, popis);
  63. int brojac=0;
  64. while(trenutni!=EndL(popis)){
  65. if(((trenutno.d > 23) && (trenutno.m >= 9) && (trenutno.y >= 2012))||((trenutno.y > 2012))||((trenutno.m > 9)&& (trenutno.y >= 2012))){
  66. brojac=brojac+1;
  67.  
  68. cout << "Naziv: " << trenutno.naziv << endl;
  69. cout << "Datum: " << trenutno.d <<"."<< trenutno.m <<"."<< trenutno.y <<"."<<endl;
  70. }
  71. trenutni=NextL(trenutni, popis);
  72. if(trenutni==EndL(popis)) break;
  73. trenutno=RetrieveL(trenutni,popis);
  74. }
  75. cout<< "---------------------------------------"<<endl;
  76. cout<< "Ukupno ���¾ivotinja dostavljenih nakon 23. rujna 2012. : ";
  77. if(brojac==0)
  78. cout<<"nema";
  79. else
  80. cout<<brojac<< endl;
  81. cout<< "---------------------------------------"<<endl<<endl;
  82. }
  83.  
  84.  
  85.  
  86. int brisanje_zivotinje(lista *popis, char naziv2[30]) {
  87. element trenutni;
  88. trenutni=FirstL(popis);
  89. zivotinja trenutno;
  90. while (trenutni!=EndL(popis)) {
  91. trenutno=RetrieveL(trenutni,popis);
  92. if (string(trenutno.naziv)==string(naziv2)){
  93. DeleteL(trenutni, popis);
  94. return 1;
  95. }
  96. if (trenutni==EndL(popis))break;
  97. trenutni=NextL(trenutni,popis);
  98. }
  99. return 0;
  100. }
  101.  
  102. int brisanje_vrste(lista *popis, char vrsta2[30]) {
  103. element trenutni;
  104. trenutni=FirstL(popis);
  105. zivotinja trenutno;
  106. bool za_obrisati=false;
  107. while (trenutni!=EndL(popis)) {
  108. trenutno=RetrieveL(trenutni,popis);
  109. if (string(trenutno.vrsta)==string(vrsta2)) {
  110. DeleteL(trenutni,popis);
  111. za_obrisati=true;
  112. continue;
  113. }
  114. trenutni=NextL(trenutni,popis);
  115. }
  116.  
  117. return za_obrisati;
  118. }
  119.  
  120. void merge(zivotinja * a[],int low, int pivot, int high ) {
  121. int h,i,j,k;
  122. zivotinja * b[500];
  123. h=low;
  124. i=low;
  125. j=pivot+1;
  126.  
  127. j=pivot+1;
  128.  
  129. while((h<=pivot)&&(j<=high)) {
  130. if(a[h]->cijena>=a[j]->cijena) {
  131. b[i]=a[h];
  132. h++;
  133. }
  134.  
  135. else {
  136. b[i]=a[j];
  137. j++;
  138. }
  139. i++;
  140. }
  141.  
  142. if(h>pivot) {
  143. for(k=j; k<=high; k++) {
  144. b[i]=a[k];
  145. i++;
  146. }
  147. }
  148.  
  149. else {
  150. for(k=h; k<=pivot; k++ ) {
  151. b[i]=a[k];
  152. i++;
  153. }
  154. }
  155.  
  156. for(k=low; k<=high; k++) a[k]=b[k];
  157. }
  158.  
  159. void mergesort(zivotinja * a[], int low, int high) {
  160. int pivot;
  161. if(low<high) {
  162. pivot=(low+high)/2;
  163. mergesort(a,low,pivot);
  164. mergesort(a,pivot+1,high);
  165. merge(a,low,pivot,high);
  166. }
  167. }
  168.  
  169. void sortiraj(lista *popis) {
  170. int brojac = NumberL(popis);
  171. element trenutni;
  172. zivotinja *novi[brojac];
  173. for(int i=1; i<=brojac; i++)
  174. novi[i-1] = RetrieveL(trenutni,popis);
  175.  
  176. }
  177.  
  178.  
  179. int main() {
  180. lista popis;
  181. InitL(&popis);
  182. int izbor;
  183. int brojac=0;
  184. char naziv2[50];
  185. char vrsta2[50];
  186.  
  187. do{
  188.  
  189. cout<<"-------------------------IZBORNIK-------------------------"<<endl;
  190. cout<<"1. Dodavanje zapisa u listu."<<endl;
  191. cout<<"2. Ispis cijele liste."<< endl;
  192. cout<<"3. Ispis zivotinja dostavljenih nakon 23. rujna 2012. : "<<endl;
  193. cout<<"4. Brisanje ���¾ivotinje. "<<endl;
  194. cout<<"5. Brisanje svih zivotinja po vrsti. "<<endl;
  195. cout <<"9. IZLAZ."<< endl;
  196. cout<<"----------------------------------------------------------"<< endl;
  197. cout<<"Odaberite opciju "<<endl;
  198. cin>>izbor;
  199. cout << endl;
  200.  
  201. switch(izbor){
  202.  
  203. case 1: brojac++;
  204. unos(&popis, brojac);
  205. break;
  206.  
  207. case 2: ispis(popis);
  208. break;
  209.  
  210. case 3: datum(&popis);
  211. break;
  212.  
  213. case 4:
  214. cout<<"Koju zivotinju zelite obrisati? "<<endl;
  215. cin.ignore();
  216. cin.getline(naziv2, 50);
  217. brisanje_zivotinje(&popis, naziv2);
  218. break;
  219. case 5:
  220. cout<<"Koju vrstu zivotinje zelite obrisati? "<<endl;
  221. cin.ignore();
  222. cin.getline(vrsta2, 50);
  223. brisanje_vrste(&popis, vrsta2);
  224.  
  225. case 6: sortiraj(&popis);
  226. }
  227.  
  228.  
  229. } while (izbor != 9);
  230.  
  231. system("pause");
  232. return 0;
  233. }

Report this snippet  

You need to login to post a comment.