Posted By

dario_kovacic on 11/13/12


Tagged


Versions (?)

main.cpp


 / Published in: C++
 

realizacija zadatka 1 iz struktura podataka

  1. #include <iostream>
  2. #include <string>
  3. #include "lista_polje.h"
  4. //#include "lista_pokazivac.h"
  5. using namespace std;
  6.  
  7. int dodaj(lista* l) {
  8. int sifra;
  9. char potvrdi='n';
  10. zivotinja nova;
  11.  
  12. if (!EndL(l)) sifra=1;
  13. else sifra = RetrieveL(PreviousL(EndL(l),l),l).sifra+1;
  14. nova.sifra=sifra;
  15.  
  16.  
  17. while(potvrdi=='n'){
  18. cout<<"Naziv: ";
  19. cin.ignore(); cin.getline(nova.naziv,49,'\n');
  20. cout<<"Vrsta: ";
  21. cin.getline(nova.vrsta,49,'\n');
  22. cout<<"Cijena: ";
  23. cin>>nova.cijena; if(nova.cijena<0) return 0;
  24. cout<<"Datum dostave:\nDan: "; cin>>nova.datum.d; cout<<"Mjesec: "; cin>>nova.datum.m; cout<<"Godina: "; cin>>nova.datum.g;
  25. cout<<endl;
  26. if(nova.datum.d<1 || nova.datum.d>31 || nova.datum.m<1 || nova.datum.m>12 || nova.datum.g<1990) return 0;
  27.  
  28. cout<<"Zelite upisati zivotinju:"<<endl;
  29. cout <<"Sifra: "<<nova.sifra << endl;
  30. cout <<"Naziv: "<< nova.naziv << endl;
  31. cout <<"Vrsta: "<< nova.vrsta<< endl;
  32. cout <<"Datum dostave: "<< nova.datum.d<<"." <<nova.datum.m <<"."<<nova.datum.g<<"."<<endl;
  33. cout<<"Potvrdi(d/n): ";
  34. cin>>potvrdi; cout<<endl;
  35.  
  36. }
  37. InsertL(nova,EndL(l),l);
  38. return 1;
  39. }
  40.  
  41. void pretrazi(lista* l) {
  42. int br=0;
  43. if(!EndL(l)) cout<<"Nema upisanih zivotinja!"<<endl<<endl;
  44. else {
  45. for(int i=FirstL(l); i<EndL(l); i++) {
  46. zivotinja z=RetrieveL(i,l);
  47. if((z.datum.g>=2012 && z.datum.m>=9 && z.datum.d>23) || (z.datum.g>=2012 && z.datum.m>=10) || (z.datum.g>2012)){
  48. cout<<"Naziv: "<<z.naziv<<endl;
  49. cout<<"Vrsta: "<<z.vrsta<<endl;
  50. cout<<"Cijena: "<<z.cijena<<endl;
  51. cout<<"Datum dostave: "<<z.datum.d<<"."<<z.datum.m<<"."<<z.datum.g<<"."<<endl<<endl;
  52. br++;
  53. }
  54. }
  55. cout<<"Broj pronadenih zivotinja: "<<br<<endl<<endl;
  56. }
  57. }
  58.  
  59. void ispis(lista* l) {
  60. if(!EndL(l)) cout <<"Nema upisanih zivotinja."<<endl<<endl;
  61. else {
  62. for(int i=EndL(l)-1; i>=FirstL(l); i--) {
  63. zivotinja z=RetrieveL(i,l);
  64. cout <<"Sifra: "<<z.sifra << endl;
  65. cout <<"Naziv: "<< z.naziv << endl;
  66. cout <<"Vrsta: "<< z.vrsta<< endl;
  67. cout <<"Datum dostave: "<< z.datum.d<<"." <<z.datum.m <<"."<<z.datum.g<<"."<<endl<<endl;
  68.  
  69. }
  70. }
  71. }
  72.  
  73. int izbrisi_naziv(lista* l) {
  74. if(!EndL(l)) return 0;
  75.  
  76.  
  77. char naziv[50];
  78.  
  79. cin.ignore();
  80. cout<<"Unesi naziv: ";
  81. cin.getline(naziv,50,'\n');
  82.  
  83. for(int i=FirstL(l); i<EndL(l); i++) {
  84. zivotinja z=RetrieveL(i,l);
  85. if(strcmp(z.naziv,naziv)==0) {
  86. DeleteL(i,l);
  87. return 1;
  88. }
  89. }return 0;
  90. }
  91.  
  92. int izbrisi_vrsta(lista* l) {
  93. if(!EndL(l)) return 0;
  94.  
  95.  
  96. char vrsta[50];
  97.  
  98. cin.ignore();
  99. cout<<"Unesi vrstu: ";
  100. cin.getline(vrsta,50,'\n');
  101.  
  102. for(int i=FirstL(l); i<EndL(l); i++) {
  103. zivotinja z=RetrieveL(i,l);
  104. if(strcmp(z.vrsta,vrsta)==0) {
  105. DeleteL(i,l);
  106. return 1;
  107. }
  108. }return 0;
  109. }
  110.  
  111. void spoji(zivotinja *polje,int donji,int sredina,int gornji){
  112. int h,i,j,k;
  113. h=donji;
  114. i=donji;
  115. j=sredina+1;
  116.  
  117. zivotinja *temp = new zivotinja[gornji-donji+1];
  118.  
  119. while((h<=sredina)&&(j<=gornji)){
  120. if(polje[h].cijena>polje[j].cijena || ((polje[h].cijena==polje[j].cijena)&&(strcmp(polje[h].naziv, polje[j].naziv)>0))){
  121. temp[i]=polje[h];
  122. h++;
  123. }else{
  124. temp[i]=polje[j];
  125. j++;
  126. }
  127. i++;
  128. }
  129.  
  130. if(h>sredina){
  131. for(k=j; k<=gornji; k++){
  132. temp[i]=polje[k];
  133. i++;
  134. }
  135. }else{
  136. for(k=h; k<=sredina; k++){
  137. temp[i]=polje[k];
  138. i++;
  139. }
  140. }
  141. for(k=donji; k<=gornji; k++) polje[k]=temp[k];
  142. delete [] temp;
  143. }
  144.  
  145. void mergesort(zivotinja *polje, int donji,int gornji ){
  146. int sredina;
  147. if(donji<gornji){
  148. sredina=(donji+gornji)/2;
  149. mergesort(polje,donji,sredina);
  150. mergesort(polje,sredina+1,gornji);
  151. spoji(polje,donji,sredina,gornji);
  152. }
  153. }
  154.  
  155.  
  156. void Merge_sort1(lista *l){
  157. int br=0;
  158. for(int i=FirstL(l); i<EndL(l); i++){
  159. i= NextL(i,l);
  160. br++;
  161. }
  162.  
  163. zivotinja* polje = new zivotinja[br];
  164.  
  165.  
  166. for(int i=FirstL(l); i<EndL(l); i++){
  167. polje[i] = RetrieveL(i,l);
  168. i = NextL(i,l);
  169. }
  170.  
  171. spoji(polje,0,br-1,0);
  172.  
  173. DeleteAllL(l);
  174.  
  175. l=NULL;
  176.  
  177. l = InitL(l);
  178.  
  179. for( int i = 0; i < br; i++){
  180. InsertL(polje[i],EndL(l),l);
  181. zivotinja z = polje[i];
  182. cout << "Sifra: " << z.sifra << endl;
  183. cout << "Naziv: " << z.naziv << endl;
  184. cout << "Vrsta: " << z.vrsta << endl;
  185. cout << "Cijena: " << z.cijena << endl;
  186. cout << "Datum dostave: " << z.datum.d<<"."<<z.datum.m << "."<<z.datum.g<<"."<<endl<<endl;
  187. }
  188. }
  189.  
  190. int main() {
  191.  
  192. lista* l=NULL;
  193. l=InitL(l);
  194. char izbor='1';
  195.  
  196. cout<<"DOBRODOSLI!"<<endl<<endl;
  197. cout<<"Unesite broj pored zeljene opcije"<<endl;
  198. cout<<"1 Upis nove zivotinje"<<endl;
  199. cout<<"2 Pretrazi zivotinje koje su dodane nakon 23. rujna 2012.g"<<endl;
  200. cout<<"3 Izbrisi zivotinju prema nazivu"<<endl;
  201. cout<<"4 Izbrisi zivotinju prema vrsti"<<endl;
  202. cout<<"5 Sortiraj silazno prema cijeni i nazivu"<<endl;
  203. cout<<"6 Ispis"<<endl;
  204. cout<<"0 Izlaz"<<endl<<endl;
  205.  
  206. while(izbor!='0') {
  207. cout<<"Izbor: ";
  208. cin>>izbor;
  209. if(izbor=='0' || izbor=='1' || izbor=='2' || izbor=='3' || izbor=='4' || izbor=='5'){
  210. switch(izbor) {
  211. case '0': system ("pause"); return 0;
  212. case '1': if(dodaj(l)) cout<<"Upis uspjesno izvrsen."<<endl<<endl;
  213. else cout<<"Krivo uneseni podaci."<<endl<<endl; break;
  214. case '2': pretrazi(l); break;
  215. case '3': if(izbrisi_naziv(l)) cout<<"Zivotinja uspjesno obrisana."<<endl<<endl;
  216. else cout<<"Niti jedna zivotinja nije upisana."<<endl<<endl; break;
  217. case '4': if(izbrisi_vrsta(l)) cout<<"Zivotinja uspjesno obrisana."<<endl<<endl;
  218. else cout<<"Niti jedna zivotinja nije upisana."<<endl<<endl; break;
  219. case '5': Merge_sort1(l); break;
  220. case '6': ispis(l); break;
  221. }
  222. } else cout<<"Pogresan izbor!"<<endl;
  223.  
  224. }
  225.  
  226. system("pause");
  227. return 0;
  228. }

Report this snippet  

You need to login to post a comment.