Posted By

NikolaSmrek on 11/12/12


Tagged

lista Shop Pet pokazivaci glavni polja ATP


Versions (?)

glavni.cpp


 / Published in: C++
 

Glavni program kojim je izvrŇ°ena implementacije ATP liste.

  1. #include <iostream>
  2. #include "lista_polje.h"
  3. //#include "lista_pokazivac.h"
  4. using namespace std;
  5.  
  6. int brojac_sifra=0;
  7.  
  8. int dodaj_fun_1(){
  9. bool dodano=true;
  10. brojac_sifra++;
  11. Tblag x;
  12. x.sifra=brojac_sifra;
  13. cout<<endl<<"Vrste zivotinje: "<<endl;
  14. cin.ignore();
  15. cin.getline(x.vrsta,20);
  16. cout<<"Naziv zivotinje: "<<endl;
  17. cin.getline(x.naziv,30);
  18. cout<<"Cijena unesene zivotinje: "<<endl;
  19. cin>>x.cijena;
  20. if(0>x.cijena)return 0;
  21. cout<<"Unesite datum unosa zivotinje (format unosa DD MM GGGG): "<<endl;
  22. cin>>x.dan;
  23. cin>>x.mjesec;
  24. cin>>x.godina;
  25. if((x.dan>31) || (x.dan<=0) || (x.mjesec>12) || (x.mjesec<=0) || (x.godina<=0) || (x.godina>3000)){ brojac_sifra--; dodano=false; return 0;}
  26. if(dodano==true)InsertL(x,EndL(lista),lista);
  27. return 1;
  28. }//kraj prve funkcije
  29.  
  30. void ispis_ziv_zad_prv(){
  31. bool prazno=false;
  32. if(FirstL(lista)==EndL(lista)){cout<<endl<<"Niste unijeli elemente u listu!"<<endl;prazno=true;}
  33. if(prazno==false){
  34. pomoc x=PreviousL(EndL(lista),lista);
  35. Tblag y=RetriveL(x,lista);
  36. Tblag z=RetriveL(FirstL(lista),lista);
  37. pomoc el=EndL(lista);
  38. while(el!=FirstL(lista)){
  39. Tblag y=RetriveL(x,lista);
  40. cout<<endl<<"Sifra: "<<y.sifra<<endl
  41. <<"Vrsta: "<<y.vrsta<<endl
  42. <<"Naziv: "<<y.naziv<<endl
  43. <<"Cijena: "<<y.cijena<<endl
  44. <<"Datum upisa: "<<y.dan<<"."<<y.mjesec<<"."<<y.godina<<endl;
  45. if(y.sifra==z.sifra)break;
  46. x=PreviousL(x,lista);
  47.  
  48.  
  49. }//kraj while-a
  50. }//kraj ifa
  51. system("pause");
  52. }//kraj ispis_ziv_zad_prv
  53.  
  54. void ispis_posli_dat(){
  55. unsigned short brojac=0;
  56. pomoc x=FirstL(lista);
  57. if(EndL(lista)==FirstL(lista))cout<<endl<<"Lista je prazna! Prvo dodajte elemente!"<<endl;
  58. while(x!=EndL(lista)){
  59. Tblag y=RetriveL(x,lista);
  60. if(y.godina>2012 || (y.godina==2012 && y.mjesec>9) || (y.godina==2012 && y.mjesec==9 && y.dan>23) )
  61. {brojac++;
  62. cout<<endl<<"Sifra: "<<y.sifra<<endl
  63. <<"Vrsta: "<<y.vrsta<<endl
  64. <<"Naziv: "<<y.naziv<<endl
  65. <<"Cijena: "<<y.cijena<<endl
  66. <<"Datum upisa: "<<y.dan<<"."<<y.mjesec<<"."<<y.godina<<endl;}
  67. x=NextL(x,lista);
  68. }//kraj while-a
  69. cout<<endl<<"Ukupno ima "<<brojac<<" unesenih zapisa poslije 23.09.2012!"<<endl;
  70. system("pause");
  71. }//kraj ispis_posli_dat
  72.  
  73. int brisi_naziv(){
  74. bool obrisano=false;
  75. short zapis_bris=0;
  76. Tblag x;
  77. if(EndL(lista)==FirstL(lista)){cout<<endl<<"Lista je prazna! Prvo dodajte elemente!"<<endl;return 0;}
  78. cout<<endl<<"Unesite naziv po kojem zelite brisati: "<<endl;
  79. cin.ignore();
  80. cin.getline(x.naziv,30);
  81. LocateL_brojac(0,x,lista);
  82. Tblag y[brojac_mista_polje];
  83. pomoc pozicija_y[brojac_mista_polje];
  84.  
  85. if(brojac_mista_polje>=0)cout<<endl<<"Ispis svih podudarajucih naziva: "<<endl<<endl;
  86. else if(brojac_mista_polje==-1){cout<<endl<<"U listi ne postoje nazivi sa zeljenim unosom brisanja!"<<endl;
  87. return 0;}
  88.  
  89. for(int i=0;i<=brojac_mista_polje;i++){
  90. zapis_bris++;
  91. pozicija_y[i]=LocateL(i,x,lista);
  92. Tblag gj=RetriveL(pozicija_y[i],lista);
  93. y[i].sifra=gj.sifra;
  94. y[i].cijena=gj.cijena;
  95. strcpy(y[i].vrsta,gj.vrsta);
  96. strcpy(y[i].naziv,gj.naziv);
  97. y[i].dan=gj.dan;
  98. y[i].mjesec=gj.mjesec;
  99. y[i].godina=gj.godina;
  100. cout<<endl<<"Zapis "<<zapis_bris<<" ima vrijednosti: "<<endl
  101. <<"Sifra: "<<y[i].sifra<<endl
  102. <<"Vrsta: "<<y[i].vrsta<<endl
  103. <<"Naziv: "<<y[i].naziv<<endl
  104. <<"Cijena: "<<y[i].cijena<<endl
  105. <<"Datum upisa: "<<y[i].dan<<"."<<y[i].mjesec<<"."<<y[i].godina<<endl;
  106. }//kraj for
  107. zapis_bris=0;
  108. do{
  109. cout<<endl<<"Unesite broj zapisa kojeg zelite izbrisati! (66 za izlaz iz petlje)"<<endl;
  110. cin>>zapis_bris;}while(zapis_bris>(brojac_mista_polje+1) && zapis_bris!=66);
  111. if(obrisano==false && zapis_bris!=66){ brojac_mista_polje=0;
  112. DeleteL(pozicija_y[zapis_bris-1],lista);
  113. obrisano=true;}//kraj ifa
  114. if(obrisano==true)return 1;
  115. else return 0;
  116. }//kraj funkcije brisi_naziv
  117.  
  118. int brisi_vrsta(){
  119. bool obrisano=false;
  120. Tblag x;
  121. if(EndL(lista)==FirstL(lista)){cout<<endl<<"Lista je prazna! Prvo dodajte elemente!"<<endl;return 0;}
  122. cout<<endl<<"Unesite vrstu po kojoj zelite brisati: "<<endl;
  123. cin.ignore();
  124. cin.getline(x.vrsta,20);
  125. LocateL_brojac(0,x,lista);
  126. if(brojac_mista_polje==-1){cout<<endl<<"U listi ne postoje nazivi sa zeljenim unosom brisanja!"<<endl;
  127. return 0;}
  128.  
  129. for(int i=0;i<=brojac_mista_polje;i++){
  130. DeleteL((LocateL(x,lista)),lista);
  131. if(i==brojac_mista_polje)obrisano=true;
  132. }
  133. if(obrisano==true)return 1;
  134. else if(obrisano==false)return 0;
  135. }
  136.  
  137.  
  138. void MSort_druga_fun6(Tblag *polje,int donji,int sredina,int gornji){
  139. int h,i,j,k;
  140. h=donji;
  141. i=donji;
  142. j=sredina+1;
  143. Tblag *temp=new Tblag [gornji-donji+1];
  144.  
  145. while((h<=sredina)&&(j<=gornji)){
  146. if(polje[h].cijena>polje[j].cijena || ((polje[h].cijena=polje[j].cijena)&&(strcmp(polje[h].naziv, polje[j].naziv)>0))){
  147. temp[i]=polje[h];
  148. h++;
  149. }//kraj if-a
  150.  
  151. else {temp[i]=polje[j];
  152. j++;
  153. }//kraj else
  154. i++;
  155. }//kraj while
  156. if(h>sredina){
  157. for(k=j;k<=gornji;k++){
  158. temp[i]=polje[k];
  159. i++;
  160. }//kraj for-a
  161. }//kraj if-a
  162. else {
  163. for(k=h;k<=sredina;k++){
  164. temp[i]=polje[k];
  165. i++;
  166. }//kraj for
  167. }//kraj else
  168. for(k=donji;k<=gornji;k++) polje[k]=temp[k];
  169. delete [] temp;
  170. }//kraj MSort_druga_fun6
  171.  
  172.  
  173. void MSort_prva_fun6(Tblag *polje,int donji, int gornji){
  174. int sredina;
  175. if(donji<gornji){
  176. sredina=(gornji+donji)/2;
  177. MSort_prva_fun6(polje,donji,sredina);
  178. MSort_prva_fun6(polje,sredina+1,gornji);
  179. MSort_druga_fun6(polje,donji,sredina,gornji);
  180. }//kraj ifa
  181. }//kraj MSort_prva_fun6
  182.  
  183.  
  184. void Mergesort_fun6(){
  185. int broj =0;
  186. pomoc tekuci=FirstL(lista);
  187. while(tekuci !=EndL(lista)){
  188. broj++;
  189. tekuci=NextL(tekuci,lista);
  190. }
  191.  
  192. Tblag * polje= new Tblag[broj];
  193. tekuci=FirstL(lista);
  194. int i=0;
  195. while(tekuci != EndL(lista)){
  196. polje[i]=RetriveL(tekuci,lista);
  197. tekuci=NextL(tekuci,lista);
  198. i++;
  199. }//kraj while-a
  200.  
  201. MSort_prva_fun6(polje,0,broj-1);
  202.  
  203. DeleteALL(lista);
  204. InitL_MS(lista);
  205. system("cls");
  206.  
  207. cout << "SORTIRANO SILAZNO PREMA CIJENI I NAZIVU" << endl;
  208. for( i = 0; i < broj; i++){
  209. InsertL(polje[i],EndL(lista),lista);
  210. Tblag ziv = polje[i];
  211. cout << "Sifra: " << ziv.sifra << endl;
  212. cout << "Naziv: " << ziv.naziv << endl;
  213. cout << "Vrsta: " << ziv.vrsta << endl;
  214. cout << "Cijena: " << ziv.cijena << endl;
  215. cout << "Datum dostave: " << ziv.dan<<"."
  216. <<ziv.mjesec << "."
  217. <<ziv.godina<<"."<<endl;
  218. cout <<endl;
  219. }//for
  220. }//kraj Mergesort_fun6
  221.  
  222. int main(){
  223. InitL(lista);
  224. unsigned short izbor;
  225. do{
  226. cout<<"================================="<<endl;
  227. cout<<" 1) Dodaj zivotinju u listu prema rastucoj sifri! "<<endl;
  228. cout<<" 2) Ispis zivotinja od zadnje dodane prema prvoj! "<<endl;
  229. cout<<" 3) Ispis zivotinja u listi koje su dostavljene nakon 23.rujan.2012! "<<endl;
  230. cout<<" 4) Brisanje zivotinja prema nazivu! "<<endl;
  231. cout<<" 5) Brisanje zivotinja prema vrsti! "<<endl;
  232. cout<<" 6) Sortiranje silazno prema cijeni i nazivu!"<<endl;
  233. cout<<endl<<"=============================="<<endl;
  234. cout<<endl<<" Unesite 66 za izlaz iz programa! "<<endl;
  235. cout<<"Odaberite zeljenu funkciju: "<<endl;
  236. cin>>izbor;
  237. system("cls");
  238. switch(izbor){
  239. case 1:if(dodaj_fun_1()==0)
  240. cout<<endl<<"Neispravni uneseni podaci, unos neuspjesan!"<<endl;
  241. else cout<<endl<<"Ispravno uneseni podaci, unos uspjesan!"<<endl;
  242. break;
  243. case 2:ispis_ziv_zad_prv();break;
  244. case 3:ispis_posli_dat();break;
  245. case 4:if(brisi_naziv()==0)
  246. cout<<endl<<"Zapis nije obrisan!"<<endl;
  247. else cout<<"Zapis uspjesno obrisan!"<<endl;
  248. break;
  249. case 5:if(brisi_vrsta()==0)
  250. cout<<endl<<"Neuspjesno brisanje!"<<endl;
  251. else cout<<endl<<"Brisanje unesene vrste je uspjesno!"<<endl;
  252. break;
  253. case 6:Mergesort_fun6();break;
  254. }//kraj switcha
  255.  
  256.  
  257. }while(izbor!=66);//kraj do while-a
  258. system("pause");
  259. return 0;
  260. }

Report this snippet  

You need to login to post a comment.