Posted By

JosipPrimorac on 11/12/12


Tagged

zadatak111


Versions (?)

zadatak1


 / Published in: C++
 

zadatak1 strukture podataka

  1. #include <iostream>
  2. #include <cstring>
  3. #include "lista_polja.h"
  4. //#include "lista_pokazivac.h"
  5.  
  6. using namespace std;
  7.  
  8.  
  9. int dodaj (list *l){
  10. bool usp = 1;
  11. tziv ziv;
  12.  
  13. cout << "Sifra zivotinje: ";
  14. cin >> ziv.sifra;
  15. cout << "Naziv naziv: ";
  16. cin.ignore();
  17. cin.getline(ziv.naziv, 20);
  18. cout << "Vrsta zivotinje: ";
  19. cin.getline(ziv.vrsta, 20);
  20. cout << "Cijena zivotinje: ";
  21. cin >> ziv.cijena;
  22. cout << "Dan u mjesecu: ";
  23. cin >> ziv.d;
  24. if (ziv.d <= 0 || ziv.d > 31)
  25. usp = 0;
  26. cout << "Mjesec: ";
  27. cin >> ziv.m;
  28. if(ziv.m <= 0 || ziv.m > 12)
  29. usp = 0;
  30. cout << "Godina: ";
  31. cin >> ziv.g;
  32. if(ziv.g <= 1900 || ziv.g > 2013)
  33. usp = 0;
  34. if(usp ==0){
  35. cout<<"Zivotinja nije dodana. Greska pri unosu."<<endl;
  36. system("pause");
  37. return 0;
  38. }
  39. if (InsertL (ziv, EndL(l), l) != 0) {
  40. usp = 1;
  41. }
  42. cout << endl;
  43. if (usp == 1) {
  44. cout<<"Zivotinja uspjesno dodana u listu."<<endl;
  45. system("pause");
  46. return 1;
  47. }
  48. else
  49. return 0;
  50. }
  51.  
  52.  
  53.  
  54. void ispis (list *l) {
  55. int n = 0;
  56. tziv z[1000];
  57. elem pozicija = FirstL(l);
  58.  
  59. while (pozicija != EndL(l)) {
  60. z[n] = RetrieveL (pozicija, l);
  61. pozicija = NextL (pozicija, l);
  62. n++;
  63. }
  64.  
  65. for(int i = n-1; i >= 0; i--) {
  66. cout << "Sifra zivotinje: " << z[i].sifra << endl;
  67. cout << "Naziv zivotinje: " << z[i].naziv << endl;
  68. cout << "Vrsta zivotinje: " << z[i].vrsta << endl;
  69. cout << "Datum unosa: " << z[i].d << "." << z[i].m << "." << z[i].g << "." << endl;
  70. cout << "Cijena: " << z[i].cijena << endl;
  71. cout << "--------------------------------" << endl;
  72. }
  73. system("pause");
  74. }
  75.  
  76. void pretrazi (list *l) {
  77. int n = 0;
  78. int br = 0;
  79. tziv z[1000];
  80. elem pozicija = FirstL(l);
  81.  
  82. while (pozicija != EndL(l)) {
  83. z[n] = RetrieveL (pozicija, l);
  84. pozicija = NextL (pozicija, l);
  85. n++;
  86. }
  87.  
  88. tziv pom[n];
  89.  
  90. for (int i = 0; i <= n; i++) {
  91. if(z[i].g > 2012){
  92. pom[br] = z[i];
  93. br ++;
  94. }
  95. else if(z[i].g == 2012){
  96. if(z[i].m > 9){
  97. pom[br] = z[i];
  98. br ++;
  99. }
  100. }
  101. else if(z[i].g == 2012 && z[i].m == 9 && z[i].d > 23){
  102. pom[br] = z[i];
  103. br ++;
  104. }
  105. }
  106. for (int j = 0; j < br; j++) {
  107. cout << "Sifra zivotinje: " << pom[j].sifra << endl;
  108. cout << "Naziv zivotinje: " << pom[j].naziv << endl;
  109. cout << "Vrsta zivotinje: " << pom[j].vrsta << endl;
  110. cout << "Datum: " << pom[j].d << "." << pom[j].m << "." << pom[j].g << "." << endl;
  111. cout << "Cijena: " << pom[j].cijena << endl;
  112. cout << "-------------------" << endl;
  113. }
  114. cout << "---------------" << endl;
  115. cout << "Broj unesenih: " << br << endl;
  116. system("pause");
  117. }
  118.  
  119. int brisi_naziv (list *l){
  120. char naziv[20];
  121. cout << "Unesite naziv zivotinje koju zelite brisati: ";
  122. cin.ignore();
  123. cin.getline (naziv, 20);
  124.  
  125. elem pozicija = FirstL(l);
  126.  
  127. tziv ziv;
  128.  
  129. while (pozicija != EndL(l)) {
  130. ziv = RetrieveL (pozicija, l);
  131. if (strcmp(ziv.naziv, naziv) != 0) {
  132. //pozicija = pozicija->sljedeci;
  133. pozicija = NextL (pozicija, l);
  134. }
  135. else {
  136. DeleteL (pozicija, l);
  137. return 1;
  138. }
  139. }
  140. return 0;
  141. }
  142.  
  143. int brisi_vrstu (list *l) {
  144. char vrsta[20];
  145. cout << "Unesite vrstu zivotinje koju zelite brisati: ";
  146. cin.ignore();
  147. cin.getline (vrsta, 20);
  148.  
  149. elem pozicija = FirstL(l);
  150.  
  151. tziv ziv;
  152.  
  153. while (pozicija != EndL(l)) {
  154. ziv = RetrieveL (pozicija, l);
  155. if (strcmp(ziv.vrsta, vrsta) != 0) {
  156. //pozicija = pozicija->sljedeci; -> zbog polja
  157. pozicija = NextL (pozicija, l);
  158. }
  159. else {
  160. DeleteL (pozicija, l);
  161. }
  162. }
  163. return 0;
  164. }
  165. void Spoji(tziv *A,int i,int k,int j) {
  166. int I=i, J=k+1, K=0;
  167. tziv *POM = new tziv [j-i+1];
  168. while (I<=k && J<=j)
  169. if (A[I].cijena<= A[J].cijena)
  170. POM[K++]=A[I++];
  171. else
  172. POM[K++]=A[J++];
  173. if (I>k)
  174. while (J<=j)
  175. POM[K++] = A[J++];
  176. else
  177. while (I<=k)
  178. POM[K++] = A[I++];
  179. for (int I=0;I<=j-i;I++)
  180. A[i+I]=POM[I];
  181. delete []POM;
  182. }
  183. void MSort(tziv *A, int i, int j) {
  184. if (i<j) {
  185. int k=(i+j)/2;
  186. MSort(A,i,k);
  187. MSort(A,k+1,j);
  188. Spoji(A,i,k,j);
  189. }
  190. }
  191. void MSort(tziv A[],int N) {
  192. MSort(A,0,N-1);
  193. }
  194.  
  195. void sortiraj (list *l) {
  196. tziv z[1000];
  197. elem pozicija = FirstL(l);
  198. int n=0;
  199. while (pozicija != EndL(l)) {
  200. z[n] = RetrieveL (pozicija, l);
  201. pozicija = NextL (pozicija, l);
  202. n++;
  203. }
  204.  
  205. MSort(z, n);
  206.  
  207. for (int j = 0; j < n; j++) {
  208. cout << "Sifra: " << z[j].sifra << endl;
  209. cout << "Naziv: " << z[j].naziv << endl;
  210. cout << "Vrsta: " << z[j].vrsta << endl;
  211. cout << "Datum: " << z[j].d << "." << z[j].m << "." << z[j].g << "." << endl;
  212. cout << "Cijena: " << z[j].cijena << endl;
  213. cout << "---------------" << endl;
  214. }
  215.  
  216. }
  217.  
  218.  
  219.  
  220. int main(){
  221.  
  222. short int izbor;
  223. list *l = InitL(l);
  224.  
  225. cout<<"\tDobrodosli u trgovinu zivotinjama 'FOI Pets'"<<endl<<endl;
  226. do {
  227. cout << "Izaberite jednu od funkcija" << endl;
  228. cout << "---------------------------" << endl;
  229. cout << "1. Dodati novu zivotinju u trgovinu. " << endl;
  230. cout << "2. Ispisati sve zivotinje u trgovini." << endl;
  231. cout << "3. Pretrazi zivotinje dodane nakon 23.9.2012." << endl;
  232. cout << "4. Brisati zivotinju odredjenog naziva." << endl;
  233. cout << "5. Brisati odredjenu vrstu." << endl;
  234. cout << "6. Sortirati zivotinje po cijeni i nazivu." << endl;
  235. cout << "9. IZLAZ iz programa" << endl;
  236. cout << "---------------------------------------------" << endl;
  237. do {
  238. cout << "Funkciju birate unosom broja funkcije"<<endl;
  239. cout << "Odaberite: ";
  240. cin >> izbor;
  241. } while ((izbor < 1 || izbor > 6) && izbor != 9);
  242.  
  243. system("cls");
  244. cout << endl;
  245. switch (izbor) {
  246.  
  247. case 1:
  248. dodaj(l);
  249. break;
  250.  
  251. case 2:
  252. ispis(l);
  253. break;
  254.  
  255. case 3:
  256. pretrazi(l);
  257. break;
  258.  
  259. case 4:
  260. brisi_naziv(l);
  261. break;
  262. case 5:
  263. brisi_vrstu(l);
  264. break;
  265. case 6:
  266. sortiraj(l);
  267. break;
  268.  
  269. case 9:
  270. break;
  271.  
  272. default : cout<<"Pogresan unos."<<endl;
  273. }
  274. system("cls");
  275.  
  276. } while (izbor != 9);
  277.  
  278. return 0;
  279. }

Report this snippet  

You need to login to post a comment.