Posted By

supavkovii on 11/11/12


Tagged

program zivotinja glavi


Versions (?)

glavni program.cpp


 / Published in: C++
 

Glavni program s evidencijom kucnih ljubimaca

  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstring>
  4.  
  5.  
  6. //#include "lista_polje2.h"
  7. #include "lista_pokazivaci.h"
  8. using namespace std;
  9.  
  10. int sifra=10000;
  11.  
  12. bool dodavanje(zivotinja *lista){
  13. pomocna pom;
  14. pom.sifra=sifra++;
  15. cout<<"Unesite podatke\n";
  16. cout<<"Sifra: " << pom.sifra << endl;
  17. cout<<"Cijena: ";
  18. cin>>pom.cijena;
  19. cout<<"Unesite datum u obliku dd/mm/gggg : ";
  20. cin.ignore();
  21. cin.getline(pom.datum,15);
  22. cout<<"Vrsta zivotinje: ";
  23. cin.getline(pom.vrsta,20);
  24. cout<<"Naziv zivotinje: ";
  25. cin.getline(pom.naziv,15);
  26. tip p=EndL(lista);
  27.  
  28. /*if(PreviousL(p,lista))
  29.   p=PreviousL(p,lista);
  30. while(p!=EndL(lista)){
  31. if(pom.sifra>RetrieveL(p,lista).sifra){
  32. tip next=NextL(p,lista);
  33. if(next==EndL(lista) || pom.sifra<RetrieveL(next,lista).sifra) break;
  34. p=next;
  35. }
  36. else break;
  37. }*/
  38. return InsertL(pom,p,lista);
  39. }
  40.  
  41. void ispis(zivotinja *lista){
  42. tip p = PreviousL(EndL(lista),lista);
  43. if(EndL(lista) == FirstL(lista)) return;
  44. while(1){
  45. cout<<"-------------------------------------"<<endl;
  46. pomocna pom=RetrieveL(p,lista);
  47. cout<<"Sifra: " << pom.sifra << endl;
  48. cout<<"Vrsta: " << pom.vrsta << endl;
  49. cout<<"Naziv: " << pom.naziv << endl;
  50. cout<<"Cijena: " << pom.cijena << endl;
  51. cout<<"Datum: " << pom.datum << endl;
  52. if(p==FirstL(lista)) break;
  53. p = PreviousL(p,lista);
  54. }
  55. }
  56.  
  57. void ispis2(zivotinja *lista){
  58. int br=0;
  59. tip p=FirstL(lista);
  60. while(p!=EndL(lista)){
  61. pomocna pom=RetrieveL(p,lista);
  62. char dd[3],mm[3],gg[5];
  63. for(int i=0; i<10; i++){
  64. if(i<3) dd[i]=pom.datum[i];
  65. if(i>2 && i<6) mm[i-3]=pom.datum[i];
  66. if(i>5) gg[i-6]=pom.datum[i];
  67. }
  68. gg[5]='/';
  69. int d,m,g;
  70. d = atoi(dd);
  71. m = atoi(mm);
  72. g = atoi(gg);
  73. if(g>2012 || (g==2012 && (m>9|| (m==9 && d>23)))){
  74. cout<<"-------------------------------------"<<endl;
  75. cout<<"Sifra: " << pom.sifra << endl;
  76. cout<<"Vrsta: " << pom.vrsta << endl;
  77. cout<<"Naziv: " << pom.naziv << endl;
  78. cout<<"Cijena: " << pom.cijena << endl;
  79. cout<<"Datum: " << pom.datum << endl;
  80. br++;
  81. }
  82. p=NextL(p,lista);
  83. }
  84. if(br>0) cout<<"\nUkupno zivotinja dostavljeno nakon 23.9.2012 ima: "<<br<<endl;
  85. else cout<<"Nema zivotinja dostavljeno nakon 23.9.2012! \n";
  86. }
  87.  
  88. bool brisanje(zivotinja *lista){
  89. int n;
  90. do{
  91. cout << "\nZa brisanje po vrstama unesite 1, a za brisanje po nazivu zivotinja unesite 2: ";
  92. cin >> n;
  93. } while (n!=1 && n!=2);
  94. if(n==1){
  95. cout << "Unesite naziv vrste: ";
  96. char vrsta[20];
  97. cin.ignore();
  98. cin.getline(vrsta,20);
  99. tip p = FirstL(lista);
  100. while(p!=EndL(lista)){
  101. if(strcmp(RetrieveL(p,lista).vrsta,vrsta)==0){
  102. tip pom=PreviousL(p,lista);
  103. p=pom;
  104. return DeleteL(pom,lista);
  105. }
  106. p = NextL(p,lista);
  107. }
  108. }
  109. else{
  110. cout << "Unesite naziv zivotinje: ";
  111. char naziv[20];
  112. cin.ignore();
  113. cin.getline(naziv,20);
  114. cout << "asdasdas " << naziv;
  115. tip p = FirstL(lista);
  116. while(p!=EndL(lista)){
  117. if(strcmp(RetrieveL(p,lista).naziv,naziv)==0){
  118. tip pom=PreviousL(p,lista);
  119. p=pom;
  120. return DeleteL(pom,lista);
  121. }
  122. p = NextL(p,lista);
  123. }
  124. }
  125. return false;
  126. }
  127.  
  128. void Spoji(pomocna *A,int i,int k,int j) {
  129. int I=i, J=k+1, K=0;
  130. pomocna *B = new pomocna [j-i+1];
  131. while (I<=k && J<=j)
  132. if (A[I].cijena>=A[J].cijena)
  133. memcpy (&B[K++],&A[I++],sizeof(pomocna));
  134. else
  135. memcpy (&B[K++],&A[J++],sizeof(pomocna));
  136. if (I>k)
  137. while (J<=j)
  138. memcpy (&B[K++],&A[J++],sizeof(pomocna));
  139. else
  140. while (I<=k)
  141. memcpy (&B[K++],&A[I++],sizeof(pomocna));
  142. for (int I=0;I<=j-i;I++)
  143. memcpy (&A[i+I],&B[I],sizeof(pomocna));
  144. delete []B;
  145. }
  146. void MSort(pomocna *A,int i, int j) {
  147. if (i<j) {
  148. int k=(i+j)/2;
  149. MSort(A,i,k);
  150. MSort(A,k+1,j);
  151. Spoji(A,i,k,j);
  152. }
  153. }
  154.  
  155. void MSort(pomocna *A,int N) {
  156. MSort(A,0,N-1);
  157. }
  158.  
  159. zivotinja* sortiranje(zivotinja *lista){
  160. if(EndL(lista)==FirstL(lista)) exit;
  161. int uk=0,i,j;
  162. pomocna polje[1000],tmp;
  163. tip p=FirstL(lista);
  164. while(p!=EndL(lista)){
  165. polje[uk].sifra = RetrieveL(p,lista).sifra;
  166. polje[uk].cijena= RetrieveL(p,lista).cijena;
  167. strcpy(polje[uk].datum,RetrieveL(p,lista).datum);
  168. strcpy(polje[uk].vrsta,RetrieveL(p,lista).vrsta);
  169. strcpy(polje[uk].naziv,RetrieveL(p,lista).naziv);
  170. uk++;
  171. p=NextL(p,lista);
  172. }
  173. MSort(polje,uk);
  174. lista->slijedeci=NULL;
  175. p = FirstL(lista);
  176. for(int j=0;j<uk;j++)
  177. InsertL(polje[j],p,lista);
  178. p = FirstL(lista);
  179. while(p!=EndL(lista)){
  180. cout << "\nSifra: " << RetrieveL(p,lista).sifra
  181. <<"\nCijena:" << RetrieveL(p,lista).cijena
  182. << "\nDatum: " << RetrieveL(p,lista).datum
  183. << "\nVrsta: " << RetrieveL(p,lista).vrsta
  184. << "\nNaziv: " << RetrieveL(p,lista).naziv;
  185. p=NextL(p,lista);
  186. }
  187. return lista;
  188. }
  189.  
  190.  
  191. int main(){
  192. zivotinja *lista=InitL(lista);
  193. int n;
  194. while(n!=9){
  195. system("cls");
  196. cout << "\n1. Dodavanje elementa u listu"
  197. << "\n2. Ispis svih elemenata liste od onog sa najvecom sifrom"
  198. << "\n3. Ispis zivotinja koje dostavljenje nakon 23.9.2012"
  199. << "\n4. Brisanje elementa liste"
  200. << "\n5. Sortiranje elementa liste"
  201. << "\n9. Izlaz"
  202. << "\nOdabir: ";
  203. cin>>n;
  204. switch(n){
  205. case 1: if(dodavanje(lista)==true) cout << "\nDodavanje je uspjelo!\n";
  206. else cout << "\nDodavanje nije uspjelo!\n";
  207. break;
  208. case 2: ispis(lista); break;
  209. case 3: ispis2(lista);break;
  210. case 4: if(brisanje(lista)) cout << "\nBrisanje je uspjelo\n";
  211. else cout << "\nBrisanje nije uspjelo\n";
  212. break;
  213. case 5:lista = sortiranje(lista); break;
  214. };
  215. system("pause");
  216. }
  217. cin >> n;
  218. return 0;
  219. }

Report this snippet  

You need to login to post a comment.