Posted By

idurlen1 on 11/28/12


Tagged

data structures Strukture podataka Durlen Ivan


Versions (?)

Glavni program


 / Published in: C++
 

glavni program

  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstring>
  4. //#include "Lista_Polje.h"
  5. #include "lista_pokazivac.h"
  6. using namespace std;
  7.  
  8. int Sifra = 1;
  9.  
  10.  
  11. bool valjano(char datum[]){
  12. int d = datum[1]-48 + (10*(datum[0]-48));
  13. int m = datum[4]-48 + (10*(datum[3]-48));
  14. int g = datum[9]-48 + (10*(datum[8]-48)) + (100*(datum[7]-48)) + (1000*(datum[6]-48));
  15.  
  16. if (datum[2] != '.' || datum[5] != '.' || datum[10] != '.')
  17. return false;
  18. else if (strlen(datum) != 11)
  19. return false;
  20. else if (d <=0 || m <=0 || g <= 0)
  21. return false;
  22. else if (g%4 == 0 && m == 2 && d>29)
  23. return false;
  24. else if (g%4 != 0 && m == 2 && d>28)
  25. return false;
  26. else if((m == 4 || m == 6 || m == 9 || m == 11) && d > 30)
  27. return false;
  28. else if ((m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) && d > 31)
  29. return false;
  30. return true;
  31. }// valjano()
  32.  
  33.  
  34. int dodajP(){
  35. char datum[20];
  36. int pos;
  37. pos = LastL();
  38. podaci Pod;
  39. cin.ignore();
  40.  
  41. cout << "Naziv zivotinje: "; cin.getline(Pod.naziv, 50);
  42. cout << "Vrsta: "; cin.getline(Pod.vrsta, 60);
  43. cout << "Cijena: ";
  44. cin >> Pod.cijena;
  45. if (Pod.cijena <= 0){
  46. cout << "Nevazeca cijena! ";
  47. return 0;
  48. }
  49. cout << "Datum dostave: ";
  50. cin >> datum;
  51. if (!valjano(datum)){
  52. cout << "Krivi unos!\n";
  53. return 0;
  54. }
  55.  
  56. Pod.dan = datum[1]-48 + (10*(datum[0]-48));
  57. Pod.mj = datum[4]-48 + (10*(datum[3]-48));
  58. Pod.god = datum[9]-48 + (10*(datum[8]-48)) + (100*(datum[7]-48)) + (1000*(datum[6]-48));
  59. Pod.sifra = Sifra;
  60.  
  61. InsertL(pos, Pod);
  62. Sifra++;
  63. return 1;
  64. }// dodajP()
  65.  
  66.  
  67. void ispis_kr(){
  68. int i = LastL()-1;
  69. for (i; i>=0; i--){
  70. podaci P;
  71. P = RetreiveL(i);
  72.  
  73. cout << "Sifra: " << P.sifra << "\nNaziv zivotinje: " << P.naziv <<
  74. "\nVrsta: " <<P.vrsta << "\nCijena: " << P.cijena << "\nDatum dostave: "<<
  75. P.dan <<"."<< P.mj << "." << P.god << "." <<endl;
  76.  
  77. if (i>0)
  78. cout << "----------------------------------------------------" << endl;
  79. }
  80. }
  81.  
  82.  
  83. void ispisi_odg(){
  84. int broj_ispisanih = 0;
  85. int i = LastL()-1;
  86.  
  87. for (i; i>=0; i--){
  88. podaci P;
  89. P = RetreiveL(i);
  90.  
  91. if (P.god > 2012){
  92. cout << "Sifra: " << P.sifra << "\nNaziv zivotinje: " << P.naziv <<
  93. "\nVrsta: " << P.vrsta << "\nCijena: " << P.cijena << "\nDatum dostave: "<<
  94. P.dan <<"."<< P.mj << "." << P.god << "." << endl << endl;
  95.  
  96. broj_ispisanih++;
  97. }
  98.  
  99. else if (P.god == 2012){
  100.  
  101. if (P.mj > 9){
  102. cout << "Sifra: " << P.sifra << "\nNaziv zivotinje: " << P.naziv <<
  103. "\nVrsta: " << P.vrsta << "\nCijena: " << P.cijena << "\nDatum dostave: "<<
  104. P.dan <<"."<< P.mj << "." << P.god << "." << endl << endl;
  105.  
  106. broj_ispisanih++;
  107. }
  108.  
  109. else if(P.mj == 9 && P.dan > 23){
  110. cout << "Sifra: " << P.sifra << "\nNaziv zivotinje: " << P.naziv <<
  111. "\nVrsta: " << P.vrsta << "\nCijena: " << P.cijena << "\nDatum dostave: "<<
  112. P.dan <<"."<< P.mj << "." << P.god << "." << endl << endl;
  113.  
  114. broj_ispisanih++;
  115. }
  116. }
  117. }
  118. cout << "\n\t Ukupno stavaka: " << broj_ispisanih++ << endl;
  119. }
  120.  
  121.  
  122. int brisi_naziv(){
  123. char ime[50];
  124. cout << "Ime zivotinje: " ;
  125. cin.ignore();
  126. cin.getline(ime, 50);
  127.  
  128. if(LocateL1(ime) == -1){
  129. cout << "\n\tElement nije pronadjen!\n" << endl;
  130. return 0;
  131. }
  132. else{
  133. DeleteL1(ime);
  134. cout << "\n\tElement je uspjesno obrisan.\n" << endl;
  135. return 1;
  136. }
  137. }// brisi_naziv()
  138.  
  139.  
  140.  
  141. int brisi_vrstu(){
  142. int brojac, i, j;
  143. i = FirstL();
  144. j = LastL()-1;
  145. char naziv[50];
  146. cout << "Naziv vrste: " ;
  147. cin.ignore();
  148. cin.getline(naziv, 50);
  149.  
  150.  
  151. if(LocateL2(naziv) == -1){
  152. cout << "\n\tElement nije pronadjen!\n" << endl;
  153. return 0;
  154. }
  155. else{
  156. podaci P;
  157. for (i; i<=j; i++){
  158. P = RetreiveL(i);
  159. if(strcmp(P.vrsta, naziv) == 0)
  160. brojac++;
  161. }
  162. for (i = 0; i <brojac; i++)
  163. DeleteL2(naziv);
  164. }
  165. cout << "\n\tVrsta je uspjesno obrisana. \n" << endl;
  166. return 1;
  167. }// brisi_vrstu()
  168.  
  169.  
  170. /********* MAIN *********/
  171. int main(){
  172.  
  173. InitL();
  174. char odg;
  175. do{
  176. cout << "1: Dodavanje nove zivotinje i ispis cijele liste\
  177. \n2: Ispis zivotinja dostavljenih nakon 23. rujna 2012.\
  178. \n3: Brisanje zivotinja prema nazivu\n4: Brisanje zivotinja prema vrsti\
  179. \n5: Silazno sortiranje\n0: Izlaz " <<endl;
  180. do{
  181. cout << "\n\tOdabir: ";
  182. cin >> odg;
  183. }while(odg < '0' && odg > '5');
  184. system ("cls");
  185.  
  186. switch(odg){
  187.  
  188. case '0': return 0;
  189.  
  190. case '1': dodajP();
  191. system ("cls");
  192. ispis_kr();
  193. break;
  194.  
  195.  
  196. case '2': if (LastL() > 0)
  197. ispisi_odg();
  198. else
  199. cout << "Lista je prazna! " << endl;
  200. break;
  201.  
  202. case '3': if (LastL() > 0){
  203. brisi_naziv();
  204. ispis_kr();
  205. }
  206. else
  207. cout << "Lista je prazna! "<< endl;
  208. break;
  209.  
  210. case '4': if (LastL() > 0){
  211. brisi_vrstu();
  212. ispis_kr();
  213. }
  214. else
  215. cout << "Lista je prazna! "<< endl;
  216. break;
  217.  
  218. case '5':
  219. break;
  220.  
  221. default: cout << "\nKrivi izbor! ";
  222. }
  223. cout <<"\t" << endl;
  224. system ("pause");
  225. system ("cls");
  226. }while(1);
  227.  
  228. return 0;
  229. }

Report this snippet  

You need to login to post a comment.