Posted By

nkuzir on 11/12/12


Tagged

main Strukture podataka foi zadataka1


Versions (?)

Glavni program


 / Published in: C++
 

Program za prvi zadatak iz kolegija Strukture podataka. U programskom jeziku C++ trebalo je napisati program koji će evidentirati životinje u trgovini sa kućnim ljubimcima. Zapis treba sadržavati sljedeće podatke: šifru, vrstu, naziv, cijenu i datum dostave.

  1. #include <iostream>
  2. #include<string>
  3. //include "lista_polja.h"
  4. #include "lista_pokazivaci.h"
  5.  
  6. using namespace std;
  7.  
  8.  
  9. int sifra=1;
  10.  
  11. int noviZapis(){
  12. zivotinje a;
  13. a.sifra=sifra;
  14. cout<<"Vrsta zivotinje: ";
  15. cin>>a.vrsta;
  16. cout<<"Naziv zivotinje: ";
  17. cin.ignore();
  18. cin.getline(a.naziv,50);
  19. cout<<"Cijena zivotinje: ";
  20. cin>>a.cijena;
  21. cout<<"Datum isporuke (ggggmmdd): ";
  22. cin>>a.datum;
  23. InsertL(a,EndL(l),l);
  24. sifra++;
  25. return 1;
  26.  
  27. }
  28.  
  29.  
  30. void ispis_silazno(){
  31. zivotinje last;
  32. tip temp=EndL(l);
  33. if(FirstL(l)==EndL(l)){
  34. cout<<"Lista je prazna!!"<<endl;
  35. return;
  36. }
  37. do{
  38. temp=PreviousL(temp,l);
  39. last=RetrieveL(temp, l);
  40. cout<<"Sifra : "<<last.sifra<<endl;
  41. cout<<"Vrsta: "<<last.vrsta<<endl;
  42. cout<<"Naziv: "<<last.naziv<<endl;
  43. cout<<"Cijena: "<<last.cijena<<endl;
  44. cout<<"Datum isporuke: "<<last.datum<<endl;
  45. }while(RetrieveL(FirstL(l),l).sifra != last.sifra);
  46. }
  47.  
  48.  
  49.  
  50. void ispis2(){
  51. int num=0;
  52. zivotinje c;
  53. tip temp = FirstL(l);
  54. while(temp!=EndL(l)){
  55. c = RetrieveL(temp, l);
  56. if(c.datum>"20120923"){
  57. cout << "Sifra: " << c.sifra << endl;
  58. cout << "Vrsta: " << c.vrsta << endl;
  59. cout << "Naziv: " << c.naziv << endl;
  60. cout<< "Cijena: "<<c.cijena<<endl;
  61. cout << "Datum(ggggmmdd): " << c.datum << endl;
  62. cout << endl;
  63. num++;}
  64. temp=NextL(temp,l);
  65. }
  66. if(num==0) cout<<"Nakon 23. rujna 2012. nije dostavljena nijedna zivotinja"<<endl;
  67. else cout<<"Broj dostavljenih nakon 23.rujna 2012: "<<num<<endl;
  68. }
  69.  
  70.  
  71. int brisanje_po_nazivu(){
  72.  
  73. string naziv;
  74. cout << "Naziv zivotinje koju zelite obrisati: ";
  75. cin >> naziv;
  76. zivotinje c;
  77. tip temp = FirstL(l);
  78.  
  79. while (temp != EndL(l)) {
  80. c = RetrieveL(temp, l);
  81. if (c.naziv == naziv) {
  82.  
  83. DeleteL(LocateL(c, l), l);
  84. temp = FirstL(l);
  85. }
  86. else {
  87. temp = NextL(temp, l);
  88. }
  89. }
  90. return 1;
  91. }
  92.  
  93.  
  94. int brisanje_po_vrsti(){
  95. string vrsta;
  96. cout << "Vrsta zivotinje za brisanje: ";
  97. cin >> vrsta;
  98.  
  99. zivotinje c;
  100. tip temp = FirstL(l);
  101. tip za_brisanje;
  102.  
  103. while (temp != EndL(l)) {
  104. c = RetrieveL(temp, l);
  105. if (c.vrsta == vrsta) {
  106. za_brisanje = temp;
  107. DeleteL(za_brisanje, l);
  108. temp = FirstL(l);
  109. }
  110. else {
  111. temp = NextL(temp, l);
  112. }
  113. }
  114. return 1;
  115.  
  116. }
  117.  
  118.  
  119. void mergesort_naziv(zivotinje novo_polje[],int lijevi, int desni){
  120. int srednji=(lijevi + desni)/2;
  121. zivotinje pomocni;
  122. if(desni-lijevi==1){
  123. if(strcmp(novo_polje[desni].naziv,novo_polje[lijevi].naziv)>0){
  124. pomocni=novo_polje[desni];
  125. novo_polje[desni]=novo_polje[lijevi];
  126. novo_polje[lijevi]=pomocni;
  127. return;
  128. }
  129. }
  130. else if(desni==lijevi){
  131. return;
  132. }
  133. else {
  134. mergesort_naziv(novo_polje,lijevi,srednji);
  135. mergesort_naziv(novo_polje,srednji+1,desni);
  136.  
  137. int velicina=desni-lijevi+1;
  138. zivotinje *pomocno_polje=new zivotinje[velicina];
  139. int l=lijevi;
  140. int s=srednji+1;
  141.  
  142. for(int i=0;i<velicina;i++){
  143. if(l==srednji+1){
  144. pomocno_polje[i]=novo_polje[s];
  145. s++;
  146. continue;
  147. }
  148. if(s==desni+1) {
  149. pomocno_polje[i]=novo_polje[l];
  150. l++;
  151. continue;
  152. }
  153. if(strcmp(novo_polje[l].naziv,novo_polje[s].naziv)>0){
  154. pomocno_polje[i]=novo_polje[l];
  155. l++;
  156. }
  157. else {
  158. pomocno_polje[i]=novo_polje[s];
  159. s++;
  160. }
  161. }
  162. int j=0;
  163. for(int i=lijevi;i<=desni;i++){
  164. novo_polje[i]=pomocno_polje[j];
  165. j++;
  166. }
  167. }
  168. }
  169.  
  170.  
  171. void mergesort_cijena(zivotinje novo_polje[],int lijevi, int desni){
  172. int srednji=(lijevi + desni)/2;
  173. zivotinje pomocni;
  174. if(desni-lijevi==1){
  175. if(novo_polje[desni].cijena > novo_polje[lijevi].cijena){
  176. pomocni=novo_polje[desni];
  177. novo_polje[desni]=novo_polje[lijevi];
  178. novo_polje[lijevi]=pomocni;
  179. return;
  180. }
  181. }
  182. else if(desni==lijevi){
  183. return;
  184. }
  185. else {
  186. mergesort_cijena(novo_polje,lijevi,srednji);
  187. mergesort_cijena(novo_polje,srednji+1,desni);
  188.  
  189. int velicina=desni-lijevi+1;
  190. zivotinje *pomocno_polje=new zivotinje[velicina];
  191. int l=lijevi;
  192. int s=srednji+1;
  193.  
  194. for(int i=0;i<velicina;i++){
  195. if(l==srednji+1){
  196. pomocno_polje[i]=novo_polje[s];
  197. s++;
  198. continue;
  199. }
  200. if(s==desni+1) {
  201. pomocno_polje[i]=novo_polje[l];
  202. l++;
  203. continue;
  204. }
  205. if(novo_polje[l].cijena>novo_polje[s].cijena){
  206. pomocno_polje[i]=novo_polje[l];
  207. l++;
  208. }
  209. else {
  210. pomocno_polje[i]=novo_polje[s];
  211. s++;
  212. }
  213. }
  214. int j=0;
  215. for(int i=lijevi;i<=desni;i++){
  216. novo_polje[i]=pomocno_polje[j];
  217. j++;
  218. }
  219. }
  220. }
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227. int main(){
  228. InitL(l);
  229. int izbor;
  230.  
  231.  
  232.  
  233. do{
  234. cout<<endl;
  235. cout << "Izbornik" << endl;
  236. cout << "1 - Unos novog zapisa" << endl;
  237. cout << "2 - Ispis(silazno)" << endl;
  238. cout << "3 - Ispis proizvoda dostavljenih nakon 23.09.2012. i njihov ukupan broj" << endl;
  239. cout << "4 - Brisanje po nazivu zivotinje" << endl;
  240. cout<< "5- Brisanje po vrsti zivotinje"<<endl;
  241. cout << "6 - Sortiranje i ispis zivotinja prema cijeni i nazivu zivotinja" << endl;
  242. cout << "0 - Kraj rada" << endl << endl;
  243. cout << "Vas izbor: ";
  244. cin >> izbor;
  245.  
  246. switch(izbor){
  247. case 1: noviZapis(); break;
  248. case 2: ispis_silazno(); break;
  249. case 3: ispis2(); break;
  250. case 4:{ int a= brisanje_po_nazivu();
  251. if(a==1) cout<<"Obrisana je unesena zivotinja!"<<endl;
  252. else cout<<"Brisanje nije uspjelo"<<endl;
  253. break;}
  254. case 5:{int a =brisanje_po_vrsti();
  255. if(a==1) cout<<"Obrisana je unesena vrsta!"<<endl;
  256. else cout<<"Brisanje nije uspjelo"<<endl;
  257. break;}
  258. case 6: { int velicina_polja=0;
  259. tip pomocni=FirstL(l);
  260. while(pomocni!=EndL(l)){
  261. velicina_polja++;
  262. pomocni=NextL(pomocni,l);
  263. }
  264. zivotinje *novo_polje=new zivotinje[velicina_polja];
  265. pomocni=FirstL(l);
  266. for(int i=0;pomocni!=EndL(l);i++){
  267. novo_polje[i]=RetrieveL(pomocni,l);
  268. pomocni=NextL(pomocni,l);
  269. }
  270. cout << "Silazno sortirano prema nazivu zivotinje(merge sort):" << endl;
  271. mergesort_naziv(novo_polje,0,velicina_polja-1);
  272. for(int i=0;i<velicina_polja;i++){
  273. cout<<"Naziv :"<<novo_polje[i].naziv<<endl;
  274. cout<<"Cijena :"<<novo_polje[i].cijena<<endl;
  275. }
  276. cout<<endl;
  277. DeleteAllL(l);
  278. for(int i=0;i<velicina_polja;i++){
  279. InsertL(novo_polje[i],EndL(l),l);
  280. }
  281. cout << "Silazno sortirano prema cijeni zivotinje(merge sort):" << endl;
  282. mergesort_cijena(novo_polje,0,velicina_polja-1);
  283. for(int i=0;i<velicina_polja;i++){
  284. cout<<"Naziv :"<<novo_polje[i].naziv<<endl;
  285. cout<<"Cijena :"<<novo_polje[i].cijena<<endl;
  286. }
  287. cout<<endl;
  288. DeleteAllL(l);
  289. for(int i=0;i<velicina_polja;i++){
  290. InsertL(novo_polje[i],EndL(l),l);
  291. }
  292. break;}
  293. case 0:cout<<"kraj"<<endl;break;
  294.  
  295. default: cout<<"Krivi unos! "<<endl;
  296. }
  297.  
  298. }while(izbor);
  299.  
  300.  
  301. system("pause");
  302. return 0;
  303. }

Report this snippet  

You need to login to post a comment.