Posted By

boraxx on 11/12/12


Tagged

Liste polja zivotinje


Versions (?)

zadatak 1


 / Published in: C++
 

Glavni program iz kolegija "Strukture podataka" Evidencija zivotinja

  1. #include <iostream>
  2. #include <cstring>
  3. #include "lista_polje.h"
  4. using namespace std;
  5. int izbornik () {
  6. cout<<"******** I Z B O R N I K ********"<<endl
  7. <<" 1. Dodaj zivotinje. "<<endl
  8. <<" 2. Ispisi sadrzaj. "<<endl
  9. <<" 3. Pretrazi sve nakon 23.09.2012 "<<endl
  10. <<" 4. Brisi zivotinje po nazivu. "<<endl
  11. <<" 5. Brisi zivotinje po vrsti. "<<endl
  12. <<" 6. Sortirah zivotinje po cijeni i nazivu. "<<endl
  13. <<" 0. I Z L A Z! "<<endl
  14. <<"***********************************"<<endl;
  15. int izbor;
  16. cout<<"Vas izbor: ";
  17. cin>>izbor;
  18. cout<<"==========================="<<endl;
  19. system("cls");
  20. return izbor;
  21. }
  22.  
  23. int DodajZivotinju(list *L){
  24. bool u = 0;
  25. ZIV zivotinj;
  26.  
  27. cout << "Sifra: ";
  28. cin >> zivotinj.sif;
  29. cout << "Naziv: ";
  30. cin.ignore();
  31. cin.getline(zivotinj.naziv, 20);
  32. cout << "Vrsta: ";
  33. cin.getline(zivotinj.vrsta, 30);
  34. cout << "Cijena: ";
  35. cin >> zivotinj.cij;
  36.  
  37. do {
  38. cout << "Dan: ";
  39. cin >> zivotinj.dan;
  40. } while (zivotinj.dan <= 0 || zivotinj.dan > 31);
  41. do {
  42. cout << "Mjesec: ";
  43. cin >> zivotinj.mjesec;
  44. } while (zivotinj.mjesec <= 0 || zivotinj.mjesec > 12);
  45. do {
  46. cout << "Godina: ";
  47. cin >> zivotinj.god;
  48. } while (zivotinj.god <= 1900 || zivotinj.god > 2013);
  49.  
  50. if (INSERTL (zivotinj, ENDL(L), L) != 0) {
  51. u = 1;
  52. }
  53. cout << endl;
  54. if (u == 1) return 1;
  55. else return 0;
  56. }
  57.  
  58. void IspisiSveZivotinje (list *L) {
  59. int broj= 0;
  60. ZIV z[1000];
  61. el position = FIRSTL(L);
  62.  
  63. while (position != ENDL(L)) {
  64. z[broj] = RETRIEVEL (position, L);
  65. position = NEXTL (position, L);
  66. broj++;
  67. }
  68.  
  69. for(int j = broj-1; j >= 0; j--) {
  70. cout << "Sifra: " << z[j].sif<<endl
  71. << "Naziv: " << z[j].naziv << endl
  72. << "Vrsta: " << z[j].vrsta << endl
  73. << "Datum: " << z[j].dan << "." << z[j].mjesec << "." << z[j].god << "." << endl
  74. << "Cijena: " << z[j].cij << endl
  75. << "====================" << endl;
  76. }
  77. }
  78.  
  79. void PretrazivanjeZivotinja (list *L) {
  80. int broj = 0;
  81. int brojac = 0;
  82. ZIV z[1000];
  83. el position = FIRSTL(L);
  84.  
  85. while (position != ENDL(L)) {
  86. z[broj] = RETRIEVEL (position, L);
  87. position = NEXTL (position, L);
  88. broj++;
  89. }
  90.  
  91. ZIV p[broj];
  92.  
  93. for (int i = 0; i <= broj; i++) {
  94. if(z[i].god > 2012){
  95. p[brojac] = z[i];
  96. brojac ++;
  97. }
  98. else if(z[i].god == 2012){
  99. if(z[i].mjesec >= 9){
  100. p[brojac] = z[i];
  101. brojac ++;
  102. }
  103. }
  104. else if(z[i].god == 2012 && z[i].mjesec == 9 && z[i].dan >= 24){
  105. p[brojac] = z[i];
  106. brojac ++;
  107. }
  108. }
  109. for (int j = 0; j < brojac; j++) {
  110. cout << "Sifra: " << p[j].sif << endl
  111. << "Naziv: " << p[j].naziv << endl
  112. << "Vrsta: " << p[j].vrsta << endl
  113. << "Datum: " << p[j].dan << "." << p[j].mjesec << "." << p[j].god << "." << endl
  114. << "Cijena: " << p[j].cij << endl
  115. << "===========================" << endl;
  116. }
  117. cout << "=========================================" << endl;
  118. cout << "Broj zivotinja nakon 23.09.2012: " << brojac << endl;
  119. cout << "==========================================" << endl;
  120. }
  121.  
  122. int BrisiZivotinjePoNazivu(list *L){
  123. char naz[20];
  124. cout << "Unesite naziv zivotinje: ";
  125. cin.ignore();
  126. cin.getline (naz, 20);
  127.  
  128. el position = FIRSTL(L);
  129.  
  130. ZIV zivotinj;
  131.  
  132. while (position != ENDL(L)) {
  133. zivotinj = RETRIEVEL (position, L);
  134. if (strcmp(zivotinj.naziv, naz) != 0) {
  135. position = NEXTL (position, L);
  136. }
  137. else {
  138. DELETEL (position, L);
  139. return 1;
  140. }
  141. }
  142. return 0;
  143. }
  144.  
  145. int BrisiZivotinjePoVrsti (list *L) {
  146. char vrs[20];
  147. cout << "Unesite vrstu zivotinje: ";
  148. cin.ignore();
  149. cin.getline (vrs, 20);
  150.  
  151. el position = FIRSTL(L);
  152.  
  153. ZIV zivotinj;
  154.  
  155. while (position != ENDL(L)) {
  156. zivotinj = RETRIEVEL (position, L);
  157. if (strcmp(zivotinj.vrsta, vrs) != 0) {
  158. position = NEXTL (position, L);
  159. }
  160. else {
  161. DELETEL (position, L);
  162. }
  163. }
  164. return 0;
  165. }
  166. void spajanje (ZIV *A, int i, int k, int j){
  167. int I=i, J=k+1, K=0;
  168. ZIV *B = new ZIV [j-i+1];
  169.  
  170. while (I <= k && J <= j)
  171. if (I <= J)
  172. B[K++] = A[I++];
  173. else
  174. B[K++] = A[J++];
  175. if (I>k)
  176. while (J <= j)
  177. B[K++] = A[J++];
  178. else
  179. while (I<=k)
  180. B[K++] = A[I++];
  181. for (int I = 0; I <=j-i; I++) {
  182. A[i+I] = B[I];
  183. }
  184. delete []B;
  185. }
  186.  
  187. void MSort (ZIV *A, int i, int j) {
  188. if (i<j) {
  189. int k=(i+j)/2;
  190. MSort(A,i,k);
  191. MSort (A, k+1, j);
  192. spajanje (A,i,k,j);
  193. }
  194. }
  195.  
  196. void MSort (ZIV A[], int N) {
  197. MSort (A,0,N-1);
  198. }
  199.  
  200. void SortirajMSort(list *L){
  201. ZIV z[1000];
  202. el position = FIRSTL(L);
  203. int br=0;
  204. while(position != ENDL(L)){
  205. z[br] = RETRIEVEL (position, L);
  206. position = NEXTL (position, L);
  207. br++;
  208. }
  209. MSort(z,br);
  210. for (int j = 0; j < br; j++) {
  211. cout << "Sifra: " << z[j].sif << endl
  212. << "Naziv: " << z[j].naziv << endl
  213. << "Vrsta: " << z[j].vrsta << endl
  214. << "Datum: " << z[j].dan << "." << z[j].mjesec << "." << z[j].god << "." << endl
  215. << "Cijena: " << z[j].cij << endl
  216. << "==========================" << endl;
  217. }
  218.  
  219. }
  220.  
  221. int main(){
  222. int izbor;
  223. list *L=INITL(L);
  224. do{
  225. izbor = izbornik();
  226. switch (izbor){
  227.  
  228. case 1:
  229. DodajZivotinju(L);
  230. break;
  231.  
  232. case 2:
  233. IspisiSveZivotinje(L);
  234. break;
  235.  
  236. case 3: PretrazivanjeZivotinja(L);
  237. break;
  238.  
  239. case 4: BrisiZivotinjePoNazivu (L);
  240. break;
  241.  
  242. case 5: BrisiZivotinjePoVrsti (L);
  243. break;
  244.  
  245. case 6: SortirajMSort (L);
  246. break;
  247.  
  248. case 0:
  249. break;
  250. default: cout<<endl<<"Unijeli ste pogresan broj, pokusajte ponovo! "<<endl<<endl;
  251.  
  252.  
  253. }
  254.  
  255. }while(izbor !=0);
  256.  
  257.  
  258. system("pause");
  259. return 0;
  260. }

Report this snippet  

You need to login to post a comment.