Posted By

frafajec on 11/11/12


Tagged

1 Strukture podataka zadatak


Versions (?)

Evidencija zivotinja


 / Published in: C++
 

Kod evidentira zivotinje koje korisnik unosi. Omoguceno je brisanje zivotinje kao i cijele vrste, te takodjer sortiranje i ispis svih zivotinja u listi.

  1. #include<iostream>
  2. //#include "lista_polje.h"
  3. #include "lista_pokazivaci.h"
  4. using namespace std;
  5.  
  6. lista *L;
  7. int p=0,sifra=0;
  8.  
  9. void novi_zapis(){
  10. cin.ignore();
  11. ++p;
  12. podaci novi;
  13. novi.sifra = sifra;
  14. cout<<"\nUnos podataka:"<<endl;
  15. cout<<"Vrsta: ";
  16. cin.getline(novi.vrsta,50);
  17. cout<<"Naziv: ";
  18. cin.getline(novi.naziv,50);
  19. cout<<"Cijena: ";
  20. cin>>novi.cijena;
  21. cout<<"Datum dolaska (GGGGMMDD): ";
  22. cin>>novi.datum;
  23. InsertL(novi,p,L);
  24. cout<<endl;
  25. }
  26. void ispis_silazno(lista *L){
  27. if(p<=0) return;
  28. int pom=EndL(L);
  29. pom = PreviousL(pom,L);
  30. while (1){
  31. podaci novi = RetrieveL(pom,L);
  32. cout<<"Sifra: "<<novi.sifra<<endl;
  33. cout<<"Vrsta: "<<novi.vrsta<<endl;
  34. cout<<"Naziv: "<<novi.naziv<<endl;
  35. cout<<"Cjena: "<<novi.cijena<<endl;
  36. cout<<"Datum: "<<novi.datum<<endl;
  37. cout<<"---------------------"<<endl;
  38. if(pom == FirstL(L)) break;
  39. pom = PreviousL(pom,L);
  40. }
  41. };
  42. void ispis_svi(lista *L){
  43. lista *k = L -> slijedeci;
  44. while (k){
  45. cout<<"Sifra: "<<k->zapis.sifra<<endl;
  46. cout<<"Vrsta: "<<k->zapis.vrsta<<endl;
  47. cout<<"Naziv: "<<k->zapis.naziv<<endl;
  48. cout<<"Cijena: "<<k->zapis.cijena<<endl;
  49. cout<<"Datum: "<<k->zapis.datum<<endl;
  50. cout<<"---------------------"<<endl;
  51. k = k -> slijedeci;
  52. }
  53. };
  54.  
  55. void ispis_datum(lista *L){
  56. int brojac=0;
  57. lista *k = L -> slijedeci;
  58. while(k){
  59. if(k -> zapis.datum >20120923){
  60. cout<<"\nSifra: "<<k->zapis.sifra<<endl;
  61. cout<<"Vrsta: "<<k->zapis.vrsta<<endl;
  62. cout<<"Naziv: "<<k->zapis.naziv<<endl;
  63. cout<<"Cijena: "<<k->zapis.cijena<<endl;
  64. cout<<"Datum: "<<k->zapis.datum<<endl;
  65. brojac++;
  66. }
  67. k = k -> slijedeci;
  68. }
  69. cout<<"Broj zivotinja dodanih poslije 23.09.2012: "<<brojac<<endl<<endl;
  70. }
  71. void obrisi(lista *L){
  72. int odb;
  73. do{
  74. cout<<"Zelite obrisati zivotinju po:\n1. nazivu\n2. vrsti\nVas odabir: ";
  75. cin>>odb;
  76. }while(odb<1 && odb>2);
  77. if(odb==1){
  78. char nzv[50];
  79. cin.ignore();
  80. cout<<"Upisite naziv: ";
  81. cin.getline(nzv,50);
  82. DeleteL(nzv,L);
  83. if(DeleteL(nzv,L)==1){ cout<<"Uspjesno obrisano!"<<endl<<endl;
  84. p--;
  85. }
  86. }
  87. else{
  88. char nzv[50];
  89. cin.ignore();
  90. cout<<"Upisite vrstu: ";
  91. cin.getline(nzv,50);
  92. int pom=sifra;
  93. for(int i=sifra;i>0;i--){
  94. if(DeleteL(nzv,L)) p--;
  95. }
  96. if(DeleteL(nzv,L)==1){ cout<<"Uspjesno obrisano!"<<endl<<endl;
  97. }
  98. }
  99. }
  100. void sort(lista *L){
  101. if(!L->slijedeci)return;
  102. lista *prije , *trenutni, *poslije;
  103. bool sortiram;
  104. do {
  105. sortiram = false;
  106. trenutni=L->slijedeci;
  107. prije=L;
  108. while (trenutni->slijedeci) {
  109. poslije=trenutni->slijedeci;
  110. if (int(trenutni->zapis.cijena) < int(poslije->zapis.cijena)) {
  111. prije->slijedeci=poslije;
  112. trenutni->slijedeci=poslije->slijedeci;
  113. poslije->slijedeci=trenutni;
  114. sortiram=true;
  115. }
  116. prije=prije->slijedeci;
  117. trenutni=prije->slijedeci;
  118. }
  119. } while (sortiram);
  120. ispis_svi(L);
  121. return;
  122. }
  123. int main(){
  124. int izbor=0;
  125. L=new lista;
  126. InitL(L);
  127. do{
  128. cout<<"Izbornik - evidencija zivotinja"<<endl;
  129. cout<<"1. Novi zapis"<<endl;
  130. cout<<"2. Ispis sadrzaja liste"<<endl;
  131. cout<<"3. Ispis svih poslje 23.9.2012"<<endl;
  132. cout<<"4. Brisanje unosa"<<endl;
  133. cout<<"5. Sortiranje prema cijeni (silazno)"<<endl;
  134. cout<<"9. IZLAZ"<<endl;
  135. cout<<"Vas izbor: ";
  136. cin>>izbor;
  137. switch(izbor){
  138. case 1: ++sifra;
  139. novi_zapis();
  140. break;
  141. case 2: ispis_silazno(L);
  142. break;
  143. case 3: ispis_datum(L);
  144. break;
  145. case 4: obrisi(L);
  146. break;
  147. case 5: sort(L);
  148. break;
  149. case 9: break;
  150. default: cout<<"Pogresan unos!"<<endl;
  151. }
  152. }while(izbor!=9);
  153. system("pause");
  154. return 0;
  155. }

Report this snippet  

You need to login to post a comment.