Posted By

gdanz on 11/12/12


Tagged

lista Shop pokazivac pokazivaci polje polja ATP zivotinje zoo


Versions (?)

Z1_ATPlista


 / Published in: C++
 

Glavni dio programa za 1. zadatak iz kolegija Strukture podataka 2012/2013

  1. #include <iostream>
  2. //#include "polje.h"
  3. #include "pokazivac.h"
  4.  
  5. using namespace std;
  6. int sifra = 100;
  7.  
  8. void ispisPom(zivotinje z){
  9. cout << "\nsifra: " << z.sifra
  10. << "\nvrsta: " << z.vrsta
  11. << "\nnaziv: " << z.naziv
  12. << "\ncijena: " << z.cijena
  13. << "\ndatum dostave(GGGGMMDD): " << z.datum
  14. << endl;
  15. }
  16.  
  17. int unesiZ(tLista *L){
  18. zivotinje z;
  19. cout << "sifra zivotinje(generirana): " << sifra;
  20. z.sifra = sifra;
  21. cout << "\nvrsta zivotinje: ";
  22. cin.ignore();
  23. cin.getline(z.vrsta, 20);
  24. cout << "naziv zivotinje: ";
  25. cin.getline(z.naziv, 30);
  26. cout << "cijena: ";
  27. cin >> z.cijena;
  28. cout << "datum dostave(GGGGMMDD): ";
  29. cin >> z.datum;
  30. int test = InsertL(z, EndL(L), L);
  31. if(test == 1){
  32. cout <<"\n-unesli ste podatke o zivotinji!-\n\n\n";
  33. sifra++;
  34. return 1;
  35. }
  36. else return 0;
  37. }
  38.  
  39. void ispisiZ(tLista *L){
  40. if(EndL(L) == FirstL(L)){
  41. cout << "-lista je prazna-\n\n\n";
  42. return;
  43. }
  44. zivotinje p;
  45. element zadnji = PreviousL(EndL(L), L);
  46. if(EndL(L) != FirstL(L))
  47. while(true){
  48. p = RetrieveL(zadnji, L);
  49. ispisPom(p);
  50. if(zadnji == FirstL(L))
  51. break;
  52. zadnji = PreviousL(zadnji, L);
  53. }
  54. };
  55.  
  56. void doDatuma(tLista *L) {
  57. if(EndL(L) == FirstL(L)){
  58. cout << "-lista je prazna-\n\n\n";
  59. return;
  60. }
  61. int brojac = 0;
  62. zivotinje p;
  63. element zadnji = PreviousL(EndL(L), L);
  64. if(EndL(L) != FirstL(L))
  65. while(true){
  66. p = RetrieveL(zadnji, L);
  67. if(p.datum < 20120923){
  68. ispisPom(p);
  69. brojac ++;
  70. }
  71. if(zadnji == FirstL(L))
  72. break;
  73. zadnji = PreviousL(zadnji, L);
  74. }
  75. cout << "Broj zivotinja s datumom dostave prije 23.9.2012.: " << brojac << "\n\n\n";
  76. };
  77.  
  78. int brisiN(tLista *L){
  79. zivotinje n, z;
  80. bool obrisano = false;
  81. cout << "naziv zivotinje: ";
  82. cin.ignore();
  83. cin.getline(n.naziv, 20);
  84. element p = FirstL(L);
  85. while(p != EndL(L)){
  86. z = RetrieveL(p, L);
  87. if(strcmp(z.naziv, n.naziv) == 0)
  88. obrisano = DeleteL(p, L);
  89. p = NextL(p,L);
  90. }
  91. if(obrisano) {
  92. cout << "\nobrisano!\n\n";
  93. return 1;
  94. }
  95. else
  96. return 0;
  97. };
  98.  
  99. int brisiV(tLista *L){
  100. zivotinje n, z;
  101. bool obrisano = false;
  102. cout << "vrsta zivotinje: ";
  103. cin.ignore();
  104. cin.getline(n.vrsta, 20);
  105. element p = FirstL(L);
  106. while(p != EndL(L)){
  107. z = RetrieveL(p, L);
  108. if(strcmp(z.vrsta, n.vrsta) == 0)
  109. obrisano = DeleteL(p, L);
  110. p = NextL(p,L);
  111. }
  112. if(obrisano) {
  113. cout << "\nobrisano!\n\n";
  114. return 1;
  115. }
  116. else
  117. return 0;
  118. };
  119. void sortirajSpajanjem(zivotinje polje[], int L, int R) {
  120. int i, j, k, m;
  121. if (L < R) {
  122. m = (L+R)/2;
  123. sortirajSpajanjem(polje, L, m);
  124. sortirajSpajanjem(polje, m+1, R);
  125.  
  126. i=L; j=m+1; k=L;
  127. zivotinje *pom_polje = new zivotinje[R-L+1];
  128.  
  129. while (i<=m && j<=R)
  130. if (polje[i].cijena > polje[j].cijena) pom_polje[k++] = polje[i++];
  131. else if (polje[i].cijena < polje[j].cijena) pom_polje[k++] = polje[j++];
  132. else if (strcmp(polje[i].naziv, polje[j].naziv) > 0) pom_polje[k++] = polje[i++];
  133. else pom_polje[k++] = polje[i++];
  134.  
  135. while (i<=m) pom_polje[k++] = polje[i++];
  136. while (j<=R) pom_polje[k++] = polje[j++];
  137. for (k=L; k<=R; k++)
  138. polje[k] = pom_polje[k];
  139. }
  140. }
  141.  
  142. void sortirajSpajanjem(tLista *L) {
  143. zivotinje z[100];
  144. element p = FirstL(L);
  145. int br = 0;
  146. while (p != EndL(L)) {
  147. z[br] = RetrieveL(p, L);
  148. p = NextL(p, L);
  149. br++;
  150. }
  151. sortirajSpajanjem(z, 0, br-1);
  152. cout << "sortirani zapisi: ";
  153. for (int i=0; i<br; i++) {
  154. cout << "\n\nsifra: " << z[i].sifra
  155. << "\nvrsta: " << z[i].vrsta
  156. << "\nnaziv: " << z[i].naziv
  157. << "\ncijena: " << z[i].cijena
  158. << "\ndatum dostave: " << z[i].datum << endl << endl;
  159. }
  160. }
  161.  
  162. int main(){
  163. tLista *L = InitL(L);
  164. int izbor;
  165.  
  166. do{
  167. cout <<"|--izbornik-----------------------------------|\n"
  168. <<"| 1. dodaj zapis o zivotinji |\n"
  169. <<"| 2. ispis zivotinja(silazno) |\n"
  170. <<"| 3. zivotinje pristigle prije 23.09.2012 |\n"
  171. <<"| 4. brisanje unosa prema nazivu |\n"
  172. <<"| 5. brisanje unosa prema vrsti |\n"
  173. <<"| 6. sortiranje prema cijeni i nazivu(silazno)|\n"
  174. <<"|---------------------------------------------|\n"
  175. <<"| 0. izlaz iz programa |\n"
  176. <<"|---------------------------------------------|\n\n>>> ";
  177. cin >> izbor;
  178.  
  179. switch(izbor){
  180. case 1: cout << "-dodavanje novog zapisa o zivotinji-\n\n"; unesiZ(L); break;
  181. case 2: cout << "-ispis zapisa obrnutim redom od unosa-\n\n";ispisiZ(L); break;
  182. case 3: cout << "-ispis zapisa o zivotinjama pristiglim prije 23.09.2012-\n\n"; doDatuma(L); break;
  183. case 4: cout << "-brisanje zapisa prema nazivu zivotinje-\n\n"; brisiN(L); break;
  184. case 5: cout << "-brisanje zapisa prema vrsti zivotinje-\n\n"; brisiV(L); break;
  185. case 6: cout << "-silazno sortiranje zapisa prema cijeni i nazivu-\n\n"; sortirajSpajanjem(L); break;
  186. case 0: cout << "Kraj rada." << endl; break;
  187. }
  188. }while(izbor);
  189.  
  190. }

Report this snippet  

You need to login to post a comment.