Posted By

nsacic on 11/12/12


Tagged

lista sortiranje umetanjem


Versions (?)

main.cpp


 / Published in: C++
 

program napisan u c++.

  1. #include <iostream>
  2. #include <cstring>
  3. #include "polja.h"
  4. //#include "pokazivac.h"
  5. using namespace std;
  6.  
  7. int nova(){
  8. elem a;
  9. a.sifra=sifra++;
  10. cout<<"Vrsta: ";
  11. cin.ignore();
  12. cin.getline(a.vrsta,30);
  13. cout<<"Naziv: ";
  14. cin.getline(a.naziv,30);
  15. cout<<"Cijena: ";cin>>a.cijena;
  16. if(a.cijena<=0) {sifra--;
  17. return 0;}
  18. cout<<"Unesite datum dostave:";
  19. cout<<"Dan: ";cin>>a.datum.dan;
  20. if(a.datum.dan<=0||a.datum.dan>31) {sifra--;
  21. return 0;}
  22. cout<<"Mjesec: ";
  23. cin.ignore();
  24. cin.getline(a.datum.mjesec,15);
  25. cout<<"Godina: ";cin>>a.datum.godina;
  26. if(a.datum.godina<1900||a.datum.godina>2013) {sifra--;
  27. return 0;}
  28. InsertL(a,br_elem,lista);
  29. br_elem++;
  30. return 1;
  31. }
  32.  
  33. void ispis_p(){
  34. elem a;
  35. int b=0;
  36. int p = PreviousL(EndL(lista),lista);
  37. while(b<br_elem){
  38. a=RetrieveL(p,lista);
  39. cout<<"Sifra: "<<a.sifra<<endl
  40. <<"Vrsta: "<<a.vrsta<<endl
  41. <<"Naziv: "<<a.naziv<<endl
  42. <<"Cijena: "<<a.cijena<<endl
  43. <<"Datum: "<<a.datum.dan<<"."<<a.datum.mjesec<<"."<<a.datum.godina<<endl
  44. <<endl;
  45. p = PreviousL(p,lista);
  46. b++; }
  47. }
  48.  
  49. void ispis_d(){
  50. elem a;
  51. int br=0;
  52. int po = FirstL(lista);
  53. while(po!=EndL(lista)) {
  54. a = RetrieveL(po,lista);
  55. if(a.datum.godina>=2012)
  56. if((!strcmp(a.datum.mjesec,"rujan")&&a.datum.dan>23)||!strcmp(a.datum.mjesec,"listopad")||
  57. !strcmp(a.datum.mjesec,"studeni")||!strcmp(a.datum.mjesec,"prosinac")) {
  58. br++;
  59. cout<<"Sifra: "<<a.sifra<<endl
  60. <<"Vrsta: "<<a.vrsta<<endl
  61. <<"Naziv: "<<a.naziv<<endl
  62. <<"Cijena: "<<a.cijena<<endl
  63. <<"Datum: "<<a.datum.dan<<"."<<a.datum.mjesec<<"."<<a.datum.godina<<endl
  64. <<endl; }
  65. po=NextL(po,lista); }
  66. cout<<"Broj zivotinja: "<<br<<endl<<endl;
  67. }
  68.  
  69. int brisi(){
  70. char naziv[30];
  71. cout<<"Unesite naziv zivotinje: ";
  72. cin.ignore();
  73. cin.getline(naziv,30);
  74. int p = LocateL(naziv,lista);
  75. if(p==EndL(lista)) return 0;
  76. else {
  77. DeleteL(p,lista);
  78. br_elem--;
  79. return 1;}
  80. }
  81.  
  82. int brisi_vrsta(){
  83. char vrsta[30];
  84. int p;
  85. bool obrisan=0;
  86. v=1;
  87. cout<<"Unesite vrstu zivotinje: ";
  88. cin.ignore();
  89. cin.getline(vrsta,30);
  90. while (LocateL(vrsta,lista)!=EndL(lista)) {
  91. p = LocateL(vrsta,lista);
  92. DeleteL(p,lista);
  93. br_elem--;
  94. obrisan=1;
  95. }
  96. v=0;
  97. if(!obrisan) return 0;
  98. else return 1;
  99. }
  100.  
  101. void ispis(){
  102. elem a;
  103. int p=FirstL(lista);
  104. while (p!=EndL(lista)){
  105. a=RetrieveL(p,lista);
  106. cout<<"Sifra: "<<a.sifra<<endl
  107. <<"Vrsta: "<<a.vrsta<<endl
  108. <<"Naziv: "<<a.naziv<<endl
  109. <<"Cijena: "<<a.cijena<<endl
  110. <<"Datum: "<<a.datum.dan<<"."<<a.datum.mjesec<<"."<<a.datum.godina<<endl;
  111. p = NextL(p,lista); }
  112. }
  113.  
  114. void spoji(int a, int c, int b){
  115. int d=a, g=c+1, n=0;
  116. elem *e = new elem [b-a+1];
  117. elem prvi,drugi;
  118. while(d<=c && g<=b){
  119. prvi=RetrieveL(d,lista);
  120. drugi=RetrieveL(g,lista);
  121. if(prvi.cijena > drugi.cijena) {
  122. e[n++]=prvi;
  123. d++; }
  124. else if(prvi.cijena < drugi.cijena){
  125. e[n++]=drugi;
  126. g++; }
  127. }
  128. if(d>c) while(g<=b) {
  129. drugi=RetrieveL(g,lista);
  130. e[n++] = drugi;
  131. g++; }
  132. else while(d<=c) {
  133. prvi=RetrieveL(d,lista);
  134. e[n++] = prvi;
  135. d++; }
  136. for(int i=0;i<=b-a;i++) Vrati(e[i],a+i,lista);
  137. delete [] e; }
  138.  
  139. void sort(int a, int b) {
  140. if(a<b) {
  141. int c=(a+b)/2;
  142. sort(a,c);
  143. sort(c+1,b);
  144. spoji(a,c,b); }
  145. }
  146.  
  147. int main() {
  148. int izbor;
  149. InitL(lista);
  150. do {
  151. cout<<"1. Upis nove zivotinju"<<endl;
  152. cout<<"2. Ispis "<<endl;
  153. cout<<"3. Ispis zivotinja nakon 23. rujna 2012."<<endl;
  154. cout<<"4. Brisanje zivotinje(po nazivu)"<<endl;
  155. cout<<"5. Brisanje po vrsti"<<endl;
  156. cout<<"6. Silazno sortiranje po cijeni (ili nazivu)"<<endl;
  157. cout<<"7. Izlaz"<<endl;
  158. cin>>izbor;
  159. switch(izbor) {
  160. case 1:
  161. if(nova()) cout<<"Upisano!"<<endl;
  162. else cout<<"Pogresan unos!"<<endl;break;
  163. case 2:ispis_p();break;
  164. case 3:ispis_d();break;
  165. case 4:
  166. if(brisi()) {
  167. cout<<"Obrisano"<<endl;
  168. ispis(); }
  169. else cout<<"Pogresan podatak ili zapis ne postoji"<<endl;break;
  170. case 5:
  171. if(brisi_vrsta()) {
  172. cout<<"Obrisano"<<endl;
  173. ispis();}
  174. else cout<<"Pogresan podatak ili zapis ne postoji"<<endl;break;
  175. case 6:
  176. sort(0,br_elem-1);
  177. ispis();
  178. break;
  179. case 7: break;
  180. default: cout<<"Pogresan unos"<<endl;break;
  181. }
  182. }while(izbor!=7);
  183. DeleteAll(lista);
  184.  
  185. system("pause");
  186. return 0;
  187. }

Report this snippet  

You need to login to post a comment.