Posted By

Jcesar3 on 11/12/12


Tagged

sort merge lista c++


Versions (?)

SP_Zadatak_1_ glavni_program_evidencija_ljubimaca


 / Published in: C++
 

Glavni dio programa napravljenog u sklopu prvog zadatka iz labosa struktura podataka.

  1. #include <iostream>
  2. #include <cstring>
  3. #include "lista_polje.h"
  4. //#include "lista_pokazivaci.h"
  5.  
  6. using namespace std;
  7. int sifra = 1;
  8.  
  9. string mj1[12]={"sjecanj","veljaca","ozujak","travnj","svibanj","lipanj","srpanj","kolovoz",
  10. "rujan","listopad","studeni","prosinac"};
  11.  
  12. void unos(char *niz){
  13. cin.getline(niz, 100);
  14. if(cin.gcount()==1)
  15. cin.getline(niz,100);
  16. }
  17.  
  18. int zapis(Plista *B){
  19. Pljubimci a;
  20. int d,m,g,c;
  21. cout <<endl<< "Sifra: " << sifra << endl;
  22. a.sifra = sifra;
  23. cout << "Vrsta: ";
  24. unos(a.vrsta);
  25. cout << "Naziv: ";
  26. unos(a.naziv);
  27.  
  28. cout << "Cijena: ";
  29. do{cin>>c;
  30. if (c<0)cout<<"Pogresan unos. "<<endl<<"Ponovni upis cijene (cijena>=0):";
  31. }while(c<0);
  32. a.cijena=c;
  33.  
  34. cout << "Unos datuma (GGGG MM DD):"<<endl<<"Godina: ";
  35. do{
  36. cin>>g;
  37. if (g<1900)cout<<"Pogresan unos. "<<endl<<"Ponovni upis godine (godina>=1900): ";
  38. }while(g<1900);
  39. a.datum.godina=g;
  40.  
  41. cout << "Mjesec: ";
  42. do{
  43. cin>>m;
  44. if (m<1 || m>12)cout<<"Pogresan unos. "<<endl<<"Ponovni upis mjeseca (1<=dan<=12): ";
  45. }while(m<1 || m>12);
  46. a.datum.mjesec=m;
  47.  
  48. cout<< "Dan: ";
  49. int mj2[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
  50. if( g % 4 == 0 ) mj2[1] = 29;
  51. do{
  52. cin>>d;
  53. if (d<1 || d>mj2[m-1])cout<<"Pogresan unos. Mjesec "<<mj1[a.datum.mjesec-1]<<
  54. " ne moze imati toliko dana." <<endl<<"Ponovni upis dana: ";
  55. }while(d<1 || d>mj2[m-1]);
  56. a.datum.dan=d;
  57.  
  58. int test = InsertL(a, EndL(B), B);
  59. if(test==1){
  60. cout << endl << "Zapis je dodan u listu" << endl<<endl;
  61. sifra++;
  62. return 1;
  63. }
  64. else return 0;
  65. }
  66.  
  67. void ispis(Pljubimci a){
  68. cout<< endl;
  69. cout << "Sifra: " << a.sifra << endl;
  70. cout << "Vrsta: " << a.vrsta << endl;
  71. cout << "Naziv: " << a.naziv << endl;
  72. cout << "Cijena: " << a.cijena << endl;
  73. cout << "Datum dostave: " << a.datum.dan << ". "<<mj1[a.datum.mjesec-1]<<" "<<a.datum.godina<<". god."<<endl;
  74. cout << endl;
  75. }
  76.  
  77. void ispisi_obrnuto(Plista *B){
  78. Pljubimci a;
  79. element prvi = PreviousL(EndL(B), B);
  80. if( FirstL(B)!= EndL(B))
  81. while(true){
  82. a = RetrieveL(prvi, B);
  83. ispis(a);
  84. if(prvi == FirstL(B)) break;
  85. prvi = PreviousL(prvi, B);
  86. }
  87. }
  88.  
  89. void ispis_nakon23(Plista *B){
  90. int num=0;
  91. Pljubimci a;
  92. element zadnji = PreviousL(EndL(B), B);
  93. if(EndL(B) != FirstL(B))
  94. while(true){
  95. a = RetrieveL(zadnji, B);
  96. if((a.datum.godina>2012) || ((a.datum.godina==2012)&&(a.datum.mjesec>9)) ||
  97. ((a.datum.godina==2012)&&(a.datum.mjesec==9))&&(a.datum.dan>23)){
  98. num++;
  99. ispis(a);
  100. }//if
  101. if(zadnji == FirstL(B)) break;
  102. zadnji = PreviousL(zadnji, B);
  103. }//while
  104. cout << "Ukupno dodanih nakon 23. rujna 2012.: " << num << endl;
  105. }
  106.  
  107. int Brisanje_Naziv(Plista* B){
  108. char naziv[40];
  109. cout << "Unesite naziv zivotinje za brisanje: "; unos(naziv);
  110.  
  111. element prvi = FirstL(B);
  112. bool postoji = false;
  113. while(prvi != EndL(B)){
  114. Pljubimci a = RetrieveL(prvi,B);
  115. if(strcmp(a.naziv,naziv)==0){
  116. postoji = true;
  117. break;
  118. }
  119. prvi = NextL(prvi,B);
  120. }
  121.  
  122. if(postoji){
  123. DeleteL(prvi,B);
  124. cout<<"Ljubimac "<<naziv<<" je obrisan."<<endl;
  125. }
  126. else {
  127. cout<<"Ljubimac pod nazivom "<<naziv<<" nije pronadjen."<<endl;
  128. return 0;
  129. }
  130. return 1;
  131. }
  132.  
  133. int Brisanje_Vrste(Plista* B){
  134. char vrsta[40];
  135. cout << "Unesite vrstu zivotinje za brisanje: "; unos(vrsta);
  136.  
  137. element prvi = FirstL(B);
  138. bool postoji = false;
  139. while(prvi != EndL(B)){
  140. Pljubimci a = RetrieveL(prvi,B);
  141. if(strcmp(a.vrsta,vrsta)!=0){
  142. postoji = true;
  143. prvi = NextL (prvi, B);
  144. }
  145. else{
  146. DeleteL(prvi,B);
  147. postoji = true;
  148. }
  149.  
  150. }
  151.  
  152. if(postoji){
  153. cout<<"Vrsta "<<vrsta<<" je obrisana."<<endl;
  154. }
  155. else {
  156. cout<<"Vrsta pod nazivom "<<vrsta<<" nije pronadjena."<<endl;
  157. return 0;
  158. }
  159. return 1;
  160. }
  161.  
  162.  
  163. int main(){
  164. Plista *B = InitL(B);
  165. int izbor;
  166. do{
  167. cout << "IZBORNIK" << endl;
  168. cout<<"-------------------------------------------------------"<<endl;
  169. cout << "1. Dodavanje zapisa u listu" << endl;
  170. cout << "2. Ispis sadrzaja liste" << endl;
  171. cout << "3. Ispis zivotinja dostavljenih nakon 23. rujna 2012." << endl;
  172. cout << "4. Brisanje unosa prema nazivu zivotinje" << endl;
  173. cout << "5. Brisanje unosa prema vrsti zivotinje" << endl;
  174. // cout << "6. Silazno sortiranje sadrzaja liste (prema cijeni i nazivu)" << endl;
  175. cout << "9. Izlaz iz programa" << endl;
  176. cout<<"-------------------------------------------------------"<<endl;
  177. cout << "Vas izbor: ";
  178.  
  179. cin >> izbor;
  180. switch(izbor){
  181. case 1: zapis(B); break;
  182. case 2:ispisi_obrnuto(B);break;
  183. case 3: ispis_nakon23(B);break;
  184. case 4: Brisanje_Naziv(B);break;
  185. case 5: Brisanje_Vrste(B);break;
  186. // case 6: break;
  187. case 9: cout << "Kraj rada." << endl; break;
  188. default: cout << "Krivi unos!" << endl;
  189. }//switch
  190. cout<<endl;
  191. }while(izbor!=9);
  192. // system("pause");
  193. return 0;
  194. }

Report this snippet  

You need to login to post a comment.