Posted By

tgasparic on 11/12/12


Tagged

lista pokazivaci ATP


Versions (?)

Zadatak_1


 / Published in: C++
 

Upis životinja u listu, ispis iz liste, pretraživanje, sortiranje i brisanje liste.

  1. #include<iostream>
  2. #include<cstring>
  3. #include "lista_polja.h"
  4. ///#include "lista_pokazivaci.h"
  5.  
  6. using namespace std;
  7.  
  8. int sifra=1;
  9.  
  10.  
  11. int dodavanje(){
  12. ziv novi;
  13. novi.sifra=sifra;
  14. cout<<"Unesi vrstu zivotinje: ";
  15. cin>>novi.vrsta;
  16. cout<<"Unesi naziv zivotinje: ";
  17. cin.ignore();
  18. cin.getline(novi.naziv,50);
  19. cout<<"Unesi cijenu zivotinje: ";
  20. cin>>novi.cijena;
  21. cout<<"Unesi datum isporuke (bez tocka -ggggmmdd-): ";
  22. cin>>novi.datum;
  23. InsertL(novi,EndL(lista),lista);
  24. sifra++;
  25. return 1;
  26.  
  27. }
  28.  
  29. void ispis(){
  30. ziv posljednji;
  31. tip trenutacni=EndL(lista);
  32. if(FirstL(lista)==EndL(lista)){
  33. cout<<"Nema elemenata u listi"<<endl;
  34. return;
  35. }
  36. do{
  37. trenutacni=PreviousL(trenutacni,lista);
  38. posljednji=RetriveL(trenutacni, lista);
  39. cout<<"Sifra zivotinje: "<<posljednji.sifra<<endl;
  40. cout<<"Vrsta zivotinje: "<<posljednji.vrsta<<endl;
  41. cout<<"Naziv zivotinje: "<<posljednji.naziv<<endl;
  42. cout<<"Cijena zivotinje: "<<posljednji.cijena<<endl;
  43. cout<<"Datum isporuke: "<<posljednji.datum<<endl;
  44. cout<<"+++++++++++++++++++++++++++"<<endl;
  45. }while(RetriveL(FirstL(lista),lista).sifra != posljednji.sifra);
  46. }
  47.  
  48. void pretrazivanje(){
  49. ziv pomocni;
  50. int br=0;
  51. tip trenutacni=FirstL(lista);
  52. cout<<"Zivotinje sa dostavom nakon 23.rujna 2012"<<endl;
  53. while(trenutacni!=EndL(lista)){
  54. pomocni=RetriveL(trenutacni,lista);
  55. if(pomocni.datum>"20120923"){
  56. cout<<"Sifra zivotinje: "<<pomocni.sifra<<endl;
  57. cout<<"Vrsta zivotinje: "<<pomocni.vrsta<<endl;
  58. cout<<"Naziv zivotinje: "<<pomocni.naziv<<endl;
  59. cout<<"Cijena zivotinje: "<<pomocni.cijena<<endl;
  60. cout<<"Datum isporuke: "<<pomocni.datum<<endl;
  61. br++;
  62. }
  63. trenutacni=NextL(trenutacni,lista);
  64. }
  65. if(br==0)
  66. cout<<"ne postoji zivotinja sa dostavom nakon 23.rujna 2012"<<endl;
  67. else
  68. cout<<"Postoji "<<br<<" zivotinja sa dosatvom nakon 23.rujna 2012"<<endl;
  69. }
  70.  
  71. int brisanje_vrsta(){
  72. ziv pomocni;
  73. string vrsta;
  74. cout<<"Unesi vrstu životinje koju zelis izbrisati! "<<endl;
  75. cin>>vrsta ;
  76. tip trenutacni=FirstL(lista);
  77. while(trenutacni!=EndL(lista)){
  78. pomocni=RetriveL(trenutacni,lista);
  79. if(pomocni.vrsta==vrsta){
  80. DeleteL(LocateL(pomocni,lista),lista);
  81. trenutacni=FirstL(lista);}
  82. else{
  83. trenutacni=NextL(trenutacni, lista);
  84. }
  85. }
  86. return 1;
  87. }
  88. int brisanje_naziv(){
  89. ziv pomocni;
  90. string naziv;
  91. cout<<"Unesi naziv životinje koju zelis izbrisati! "<<endl;
  92. cin>>naziv ;
  93. tip trenutacni=FirstL(lista);
  94. while(trenutacni!=EndL(lista)){
  95. pomocni=RetriveL(trenutacni,lista);
  96. if(pomocni.naziv==naziv){
  97. DeleteL(LocateL(pomocni,lista),lista);
  98. trenutacni=FirstL(lista);}
  99. else{
  100. trenutacni=NextL(trenutacni, lista);
  101. }
  102. }
  103. return 1;
  104. }
  105. void sortiranje_naziv(ziv novo_polje[],int lijevi, int desni){
  106. int srednji=(lijevi + desni)/2;
  107. ziv pomocni;
  108. if(desni-lijevi==1){
  109. if(strcmp(novo_polje[desni].naziv,novo_polje[lijevi].naziv)>0){
  110. pomocni=novo_polje[desni];
  111. novo_polje[desni]=novo_polje[lijevi];
  112. novo_polje[lijevi]=pomocni;
  113. return;
  114. }
  115. }
  116. else if(desni==lijevi){
  117. return;
  118. }
  119. else {
  120. sortiranje_naziv(novo_polje,lijevi,srednji);
  121. sortiranje_naziv(novo_polje,srednji+1,desni);
  122.  
  123. int velicina=desni-lijevi+1;
  124. ziv *pomocno_polje=new ziv[velicina];
  125. int l=lijevi;
  126. int s=srednji+1;
  127.  
  128. for(int i=0;i<velicina;i++){
  129. if(l==srednji+1){
  130. pomocno_polje[i]=novo_polje[s];
  131. s++;
  132. continue;
  133. }
  134. if(s==desni+1) {
  135. pomocno_polje[i]=novo_polje[l];
  136. l++;
  137. continue;
  138. }
  139. if(strcmp(novo_polje[l].naziv,novo_polje[s].naziv)>0){
  140. pomocno_polje[i]=novo_polje[l];
  141. l++;
  142. }
  143. else {
  144. pomocno_polje[i]=novo_polje[s];
  145. s++;
  146. }
  147. }
  148. int j=0;
  149. for(int i=lijevi;i<=desni;i++){
  150. novo_polje[i]=pomocno_polje[j];
  151. j++;
  152. }
  153. }
  154. }
  155.  
  156.  
  157. void sortiranje_cijena(ziv novo_polje[],int lijevi, int desni){
  158. int srednji=(lijevi + desni)/2;
  159. ziv pomocni;
  160. if(desni-lijevi==1){
  161. if(novo_polje[desni].cijena > novo_polje[lijevi].cijena){
  162. pomocni=novo_polje[desni];
  163. novo_polje[desni]=novo_polje[lijevi];
  164. novo_polje[lijevi]=pomocni;
  165. return;
  166. }
  167. }
  168. else if(desni==lijevi){
  169. return;
  170. }
  171. else {
  172. sortiranje_cijena(novo_polje,lijevi,srednji);
  173. sortiranje_cijena(novo_polje,srednji+1,desni);
  174.  
  175. int velicina=desni-lijevi+1;
  176. ziv *pomocno_polje=new ziv[velicina];
  177. int l=lijevi;
  178. int s=srednji+1;
  179.  
  180. for(int i=0;i<velicina;i++){
  181. if(l==srednji+1){
  182. pomocno_polje[i]=novo_polje[s];
  183. s++;
  184. continue;
  185. }
  186. if(s==desni+1) {
  187. pomocno_polje[i]=novo_polje[l];
  188. l++;
  189. continue;
  190. }
  191. if(novo_polje[l].cijena>novo_polje[s].cijena){
  192. pomocno_polje[i]=novo_polje[l];
  193. l++;
  194. }
  195. else {
  196. pomocno_polje[i]=novo_polje[s];
  197. s++;
  198. }
  199. }
  200. int j=0;
  201. for(int i=lijevi;i<=desni;i++){
  202. novo_polje[i]=pomocno_polje[j];
  203. j++;
  204. }
  205. }
  206. }
  207.  
  208.  
  209.  
  210. main(){
  211. int t;
  212. int izbor;
  213. InitL(lista);
  214. do {
  215. cout<<"----------IZBORNIK--------"<<endl;
  216. cout<<"1. Dodavanje zapisa u listu prema rastucoj sifri zivotinje"<<endl;
  217. cout<<"2. Ispis zivotinja( od posljedenje dodane zivotinje)"<<endl;
  218. cout<<"3. Pretrazivanje liste i ispis zivotinja dostavljenih nakon 23.rujan 2012"<<endl;
  219. cout<<"4. Brisanje odabrane vrste zivotinja"<<endl;
  220. cout<<"5. Brisane odabranje zivotinje prema nazivu"<<endl;
  221. cout<<"6. Silazno sortiranje liste prema cijeni i nazivu"<<endl;
  222. cout<<"0. Izlaz iz programa"<<endl;
  223. cin>>izbor;
  224. switch(izbor){
  225. case 1:dodavanje();
  226. break;
  227. case 2: ispis();
  228. break;
  229. case 3: pretrazivanje();
  230. break;
  231. case 4:{ int a= brisanje_vrsta();
  232. if(a==1) cout<<"Obrisano!"<<endl;
  233. else cout<<"Brisanje nije uspio"<<endl;
  234. break;}
  235. case 5: { int a= brisanje_naziv();
  236. if(a==1) cout<<"Obrisano!"<<endl;
  237. else cout<<"Brisanje nije uspio"<<endl;
  238. break;}
  239. case 6:{ int velicina_polja=0;
  240. tip pomocni=FirstL(lista);
  241. while(pomocni!=EndL(lista)){
  242. velicina_polja++;
  243. pomocni=NextL(pomocni,lista);
  244. }
  245. ziv *novo_polje=new ziv[velicina_polja];
  246. pomocni=FirstL(lista);
  247. for(int i=0;pomocni!=EndL(lista);i++){
  248. novo_polje[i]=RetriveL(pomocni,lista);
  249. pomocni=NextL(pomocni,lista);
  250. }
  251. cout << "Silazno sortirano prema nazivu:" << endl;
  252. sortiranje_naziv(novo_polje,0,velicina_polja-1);
  253. for(int i=0;i<velicina_polja;i++){
  254. cout<<"Naziv :"<<novo_polje[i].naziv<<endl;
  255. cout<<"Cijena :"<<novo_polje[i].cijena<<endl;
  256. }
  257. cout<<endl;
  258. DeleteAllL(lista);
  259. for(int i=0;i<velicina_polja;i++){
  260. InsertL(novo_polje[i],EndL(lista),lista);
  261. }
  262. cout << "Silazno sortirano prema cijeni:" << endl;
  263. sortiranje_cijena(novo_polje,0,velicina_polja-1);
  264. for(int i=0;i<velicina_polja;i++){
  265. cout<<"Naziv :"<<novo_polje[i].naziv<<endl;
  266. cout<<"Cijena :"<<novo_polje[i].cijena<<endl;
  267. }
  268. cout<<endl;
  269. DeleteAllL(lista);
  270. for(int i=0;i<velicina_polja;i++){
  271. InsertL(novo_polje[i],EndL(lista),lista);
  272. }
  273. break;}
  274. default: cout<<"Krivi unos! "<<endl;
  275. }
  276. } while(izbor);
  277. system("PAUSE");
  278. return 0;
  279. }

Report this snippet  

You need to login to post a comment.