Zadatak 1 Main program Mario Milutin


/ Published in: C++
Save to your folder(s)

Koliko sam primjetio, drugi studenti uglavnom nisu koristili biblioteku "time.h", neke od razlika su i kod upisivanja datuma, postoje razlike u vizualnom dijelu programa.


Copy this code and paste it in your HTML
  1. #include <iostream>
  2. //#include "lista_polje.h"
  3. #include "lista_pokazivac.h"
  4. #include "time.h"
  5. using namespace std;
  6.  
  7. void unos(char *znakovni_niz){
  8. cin.getline(znakovni_niz, 30);
  9. if (cin.gcount()==1)
  10. cin.getline (znakovni_niz,30);
  11. };
  12.  
  13.  
  14. int dodaj() {
  15. int pom;
  16. tzivotinja *novi = new tzivotinja;
  17.  
  18. cout << "Sifra: " << sifra << endl;
  19. novi->sifra = sifra;
  20. cout << "Naziv: ";
  21. unos(novi->naziv);
  22. cout << "Vrsta: ";
  23. unos(novi->vrsta);
  24. cout << "Cijena: ";
  25. cin >> novi->cijena;
  26. cout << "Datum dostave: " << endl;
  27.  
  28. cout << "Godina: ";
  29. do{cin >> pom;
  30. if (pom<2000 || pom >2050) {
  31. cout << "Godina mora biti u rasponu 2000-2050" << endl;
  32. cout << "Godina: ";
  33. }
  34. }while(pom<2000 || pom >2050);
  35. (novi->datum).tm_year = pom;
  36.  
  37. cout << "Mjesec: ";
  38. do{cin >> pom;
  39. if (pom<1 || pom >12) {
  40. cout << "Mjesec mora biti u rasponu 1-12" << endl;
  41. cout << "Mjesec: ";
  42. }
  43. }while(pom<1 || pom >12);
  44. (novi->datum).tm_mon = pom;
  45.  
  46. cout << "Dan: ";
  47. if ((novi -> datum).tm_mon == 1 || (novi -> datum).tm_mon == 3 || (novi -> datum).tm_mon == 5 || (novi -> datum).tm_mon == 7 || (novi -> datum).tm_mon == 8 || (novi -> datum).tm_mon == 10 || (novi -> datum).tm_mon == 12) {
  48. do{cin >> pom;
  49. if (pom<0 || pom >32) {
  50. cout << "Dan mora biti u rasponu 0-31" <<endl;
  51. cout << "Dan: ";
  52. }
  53. } while(pom<0 || pom >32);
  54. }
  55.  
  56. if ((novi -> datum).tm_mon == 4 || (novi -> datum).tm_mon == 6 || (novi -> datum).tm_mon == 9 || (novi -> datum).tm_mon == 11) {
  57. do{cin >> pom;
  58. if (pom<0 || pom >31) {
  59. cout << "Dan mora biti u rasponu 0-30" <<endl;
  60. cout << "Dan: ";
  61. }
  62. } while(pom<0 || pom >31);
  63. }
  64.  
  65. if ((novi -> datum).tm_mon == 2) {
  66. if (((novi -> datum).tm_year) % 4 == 0) {
  67. do{cin >> pom;
  68. if (pom<0 || pom >30) {
  69. cout << "Dan mora biti u rasponu 0-29" <<endl;
  70. cout << "Dan: ";
  71. }
  72. } while(pom<0 || pom > 30);
  73. }
  74. else {
  75. do{cin >> pom;
  76. if (pom<0 || pom >28) {
  77. cout << "Dan mora biti u rasponu 0-28" <<endl;
  78. cout << "Dan: ";
  79. }
  80. } while(pom<0 || pom > 28);
  81. }
  82. }
  83.  
  84. (novi->datum).tm_mday = pom;
  85.  
  86.  
  87. return (insertL(novi,endL(lista),lista));
  88. }
  89.  
  90. void ispisi_listu() {
  91. tzivotinja tekuci;
  92. for(int i = endL(lista)-1; i>0;i--){
  93. tekuci = retrieveL(previousL(i,lista), lista);
  94. cout << "Sifra: " << tekuci.sifra << endl;
  95. cout << "Naziv: " << tekuci.naziv << endl;
  96. cout << "Vrsta: " << tekuci.vrsta << endl;
  97. cout << "Cijena: " << tekuci.cijena << endl;
  98. cout << "Datum dostave: " << (tekuci.datum).tm_mday << "." << (tekuci.datum).tm_mon << "." << (tekuci.datum).tm_year << "." << endl<<endl;
  99. }
  100. }
  101.  
  102. int pretrazi_listu() {
  103. tzivotinja tekuci;
  104. int br=0;
  105. for(int i = endL(lista)-1; i>0;i--){
  106. tekuci = retrieveL(previousL(i,lista), lista);
  107. if(!((tekuci.datum).tm_year < 2012
  108. || ((tekuci.datum).tm_year == 2012 && ((tekuci.datum).tm_mon) < 9)
  109. || ((tekuci.datum).tm_year == 2012 && ((tekuci.datum).tm_mon) == 9) && (tekuci.datum).tm_mday <= 23)){
  110. cout << "Sifra: " << tekuci.sifra << endl;
  111. cout << "Naziv: " << tekuci.naziv << endl;
  112. cout << "Vrsta: " << tekuci.vrsta << endl;
  113. cout << "Cijena: " << tekuci.cijena << endl;
  114. cout << "Datum dostave: " << (tekuci.datum).tm_mday << "." << (tekuci.datum).tm_mon << "." << (tekuci.datum).tm_year << "." << endl<<endl;
  115. br++;
  116. }
  117. }
  118. return br;
  119. }
  120.  
  121. int obrisi_prema_nazivu(){
  122. tzivotinja tekuci;
  123. cout << "Unesite naziv zivotinje za brisanje: ";
  124. char naziv[30];
  125. bool nadjeno = false;
  126. unos(naziv);
  127. for(int i = endL(lista)-1; i>0 && !nadjeno;i--){
  128. tekuci = retrieveL(previousL(i,lista), lista);
  129. if(strcmp(naziv,tekuci.naziv)==0){
  130. cout << "Jeste li sigurni da zelite obrisati zapis (d/n): " << endl << endl;
  131. cout << "Sifra: " << tekuci.sifra << endl;
  132. cout << "Naziv: " << tekuci.naziv << endl;
  133. cout << "Vrsta: " << tekuci.vrsta << endl;
  134. cout << "Cijena: " << tekuci.cijena << endl;
  135. cout << "Datum dostave: " << (tekuci.datum).tm_mday << "." << (tekuci.datum).tm_mon << "." << (tekuci.datum).tm_year << "." << endl<<endl;
  136. nadjeno = true;
  137. char izbor;
  138. cout << "(d/n) >> ";
  139. do{cin >>izbor;} while(izbor!='d' && izbor!='n');
  140. if(izbor=='d') deleteL(i-1,lista);
  141. else return 0;
  142. }
  143. }
  144. return nadjeno;
  145. }
  146.  
  147. int obrisi_prema_vrsti(){
  148. tzivotinja tekuci;
  149. cout << "Unesite vrstu zivotinje za brisanje: ";
  150. char vrsta[30];
  151. bool nadjeno = false;
  152. unos(vrsta);
  153. for(int i = endL(lista)-1; i>0;i--){
  154. tekuci = retrieveL(previousL(i,lista), lista);
  155. if(strcmp(vrsta,tekuci.vrsta)==0){
  156. char izbor;
  157. if(!nadjeno){
  158. cout << "Jeste li sigurni da zelite obrisati zapise ove vrste: " << vrsta << endl << endl;
  159. cout << "(d/n) >> ";
  160. do{cin >>izbor;} while(izbor!='d' && izbor!='n');
  161. }
  162. if(izbor=='d') deleteL(i-1,lista);
  163. nadjeno = true;
  164. }
  165. }
  166. return nadjeno;
  167. }
  168.  
  169.  
  170. void spoji(int i, int k, int j) {
  171. int I=i, J=k+1, K=0;
  172. tzivotinja *b = new tzivotinja [j-i+1];
  173. tzivotinja prvi,drugi;
  174.  
  175. while(I<=k && J<=j){
  176.  
  177. prvi=retrieveL(I,lista);
  178. drugi=retrieveL(J,lista);
  179.  
  180. if(prvi.cijena > drugi.cijena) {
  181. b[K++]=prvi;
  182. I++;
  183. }
  184.  
  185. else if(prvi.cijena < drugi.cijena){
  186. b[K++]=drugi;
  187. J++;
  188. }
  189. else if(strcmp(prvi.naziv,drugi.naziv)==-1) {
  190. b[K++]=drugi;
  191. J++;
  192. }
  193. else {
  194. b[K++]=prvi;
  195. I++;
  196. }
  197. }
  198.  
  199. if(I>k) while(J<=j) {
  200. drugi=retrieveL(J,lista);
  201. b[K++] = drugi;
  202. J++;
  203. }
  204.  
  205. else while(I<=k) {
  206. prvi=retrieveL(I,lista);
  207. b[K++] = prvi;
  208. I++;
  209. }
  210.  
  211. for(int I=0;I<=j-i;I++) Vrati(b[I],i+I,lista);
  212.  
  213. delete [] b;
  214. }
  215.  
  216. void msort(int i, int j) {
  217. if(i<j) {
  218. int k=(i+j)/2;
  219. msort(i,k);
  220. msort(k+1,j);
  221. spoji(i,k,j);
  222. }
  223. }
  224.  
  225. void sortiraj() {
  226. int br_elem = endL(lista)-1;
  227. msort(0,br_elem-1);
  228. reverse(lista);
  229. }
  230.  
  231.  
  232. int izbornik(){
  233. int izbor;
  234. cout << "-------------------------------" << endl;
  235. cout << " GLAVNI IZBORNIK " << endl;
  236. cout << "-------------------------------" << endl;
  237. cout << " 1) Dodavanje zapisa" << endl;
  238. cout << " 2) Ispis liste" << endl;
  239. cout << " 3) Ispis zivotinja dostavljenih nakon 23.09.2012." << endl;
  240. cout << " 4) Brisanje prema nazivu" << endl;
  241. cout << " 5) Brisanje prema vrsti" << endl;
  242. cout << " 6) Sortiranje liste" << endl;
  243. cout << " 9) Izlaz iz programa" << endl;
  244. cout << endl;
  245. cin >> izbor;
  246. return izbor;
  247. }
  248.  
  249.  
  250. int main(){
  251.  
  252. initL(lista);
  253. int izbor = 0;
  254. do {
  255. izbor = izbornik();
  256. switch(izbor){
  257. case 1:
  258. cout << (dodaj()? "Zapis uspjesno dodan!\n" : "Zapis nije dodan\n");
  259. break;
  260. case 2:
  261. ispisi_listu();
  262. break;
  263. case 3:
  264. cout<< "Ispisan(o) je " << pretrazi_listu() << " zapis(a).\n";
  265. break;
  266. case 4:
  267. if(obrisi_prema_nazivu())
  268. cout << "Zapis izbrisan"<<endl<<endl;
  269. else cout << "Nije pronadjen zapis s tim nazivom / zapis nije obrisan" << endl;
  270.  
  271. break;
  272. case 5:
  273. if(obrisi_prema_vrsti())
  274. cout << "Zivotinje te vrste su obrisane" << endl;
  275. else cout << "Ne postoji zapis te vrste" << endl;
  276. break;
  277. case 6:
  278. sortiraj();
  279. break;
  280. }
  281.  
  282. }while (izbor!=9);
  283.  
  284. return 0;
  285. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.