Advertisement
wiuu23

Genericke funkcije-strukture

Sep 6th, 2017
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.06 KB | None | 0 0
  1. /*
  2. KOLEKCIJA
  3. #pragma once
  4. #include <functional>
  5.  
  6. //typedef   Tip;
  7. template <class Tip>
  8. struct Kolekcija
  9. {
  10. int max_size = 30;
  11. Tip* podaci = new Tip[max_size];
  12. int brojac = 0;
  13. void Prosiri()
  14. {
  15. max_size *= 2;
  16. Tip* podaciNew = new Tip[max_size];
  17. for (int i = 0; i < brojac; i++)
  18. {
  19. podaciNew[i] = podaci[i];
  20. }
  21. delete[]podaci;
  22. podaci = podaciNew;
  23. }
  24.  
  25. Tip& Get(int i)
  26. {
  27. return podaci[i];
  28. }
  29. void Dodaj(Tip newV)
  30. {
  31. if (brojac == max_size)
  32. Prosiri();
  33. podaci[brojac++] = newV;
  34. }
  35.  
  36. void ForEach(std::function<void(Tip&)> p)
  37. {
  38. for (int i = 0; i < brojac; i++)
  39. {
  40. Tip& t = podaci[i];
  41. p(t);
  42. }
  43. }
  44. Kolekcija Filter(std::function<bool(Tip&)> f)
  45. {
  46. Kolekcija newK;
  47.  
  48. for (int i = 0; i < brojac; i++)
  49. {
  50.  
  51. Tip &x = podaci[i];
  52. if (f(x))
  53. {
  54. newK.Dodaj(x);
  55. }
  56. }
  57.  
  58. return newK;
  59. }
  60. };
  61.  
  62. */
  63.  
  64. /*
  65. DATUM
  66. #pragma once
  67. #include<iostream>
  68. using namespace std;
  69.  
  70. struct Datum
  71. {
  72. int _dan;
  73. int _mjesec;
  74. int _godina;
  75.  
  76. //static Datum Napravi(int d, int m, int g)
  77. //{
  78. //  Datum datum;
  79. //  datum._dan = d;
  80. //  datum._mjesec = m;
  81. //  datum._godina = g;
  82. //  return datum;
  83. //}
  84.  
  85. bool jednako(Datum& drugi)
  86. {
  87. return
  88. (_dan == drugi._dan) &&
  89. (_mjesec == drugi._mjesec) &&
  90. (_godina == drugi._godina);
  91. }
  92.  
  93. void Ispis()
  94. {
  95. cout << "Datum: " << _dan << "." << _mjesec << "." << _godina << endl;
  96. }
  97. };
  98. Datum Napravi(int d, int m, int g)
  99. {
  100. Datum datum;
  101. datum._dan = d;
  102. datum._mjesec = m;
  103. datum._godina = g;
  104. return datum;
  105. }
  106. */
  107.  
  108. #include <iostream>
  109. #include "Kolekcija.h"
  110. #include "Datum.h"
  111. using namespace std;
  112.  
  113. void main()
  114. {
  115.     /*
  116.     a)  Instancirajte Kolekcija k1. Dodajte 5 elemenata u k1.
  117.     Instancirajte kolekcija k2 u dinamičkoj memoriji. Dodajte 5 elemenata u k2
  118.     */
  119.     //Kolekcija k1;
  120.     //k1.Dodaj(21);
  121.     //k1.Dodaj(22);
  122.     //k1.Dodaj(23);
  123.     //k1.Dodaj(24);
  124.     //k1.Dodaj(25);
  125.     ////ispis:
  126.     //k1.ForEach([&](int p)
  127.     //{
  128.     //  cout << p << ", ";
  129.     //});
  130.     //cout << endl;
  131.  
  132.     //Kolekcija * k2 = new Kolekcija;
  133.     //k2->Dodaj(31);
  134.     //k2->Dodaj(32);
  135.     //k2->Dodaj(33);
  136.     //k2->Dodaj(34);
  137.     //k2->Dodaj(35);
  138.     //k2->ForEach([&](int p)
  139.     //{
  140.     //  cout << p << ", ";
  141.     //});
  142.     //cout << endl;
  143.     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  144.     /*
  145.     b)  Prepravite int Tip u Datum Tip. Umjesto brojeva dodajte datuma u k1 i k2.
  146.     */
  147.     /*Kolekcija k1;
  148.     k1.Dodaj(Napravi(23,3,2017));
  149.     k1.Dodaj(Napravi(24, 3, 2017));
  150.     k1.Dodaj(Napravi(25, 3, 2017));
  151.     k1.Dodaj(Napravi(26, 3, 2017));
  152.     k1.Dodaj(Napravi(27, 3, 2017));
  153.     ispis:
  154.     k1.ForEach([](Datum p)
  155.     {
  156.         p.Ispis();
  157.     });
  158.     cout << endl;
  159.  
  160.     Kolekcija * k2 = new Kolekcija;
  161.     k2->Dodaj(Napravi(21, 3, 2017));
  162.     k2->Dodaj(Napravi(20, 3, 2017));
  163.     k2->Dodaj(Napravi(19, 3, 2017));
  164.     k2->Dodaj(Napravi(8, 3, 2017));
  165.     k2->Dodaj(Napravi(17, 3, 2017));
  166.     k2->ForEach([](Datum p)
  167.     {
  168.         p.Ispis();
  169.     });
  170.     cout << endl;
  171.     delete k2;*/
  172.     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  173.     /*
  174.     c)  Prepravite Datum Tip u Datum* Tip.
  175.     */
  176.  
  177.     //Kolekcija k1;
  178.     //k1.Dodaj(&Napravi(23, 3, 2017));
  179.     //k1.Dodaj(&Napravi(24, 3, 2017));
  180.     //k1.Dodaj(&Napravi(24, 3, 2017));
  181.     //k1.Dodaj(&Napravi(25, 3, 2017));
  182.     //k1.Dodaj(&Napravi(26, 3, 2017));
  183.     //k1.Dodaj(&Napravi(27, 3, 2017));
  184.  //   //ispis:
  185.     //k1.ForEach([](Datum p)
  186.     //{
  187.     //  p->Ispis();
  188.     //});
  189.     //cout << endl;
  190.  
  191.     //Kolekcija * k2 = new Kolekcija;
  192.     //k2->Dodaj(&Napravi(21, 3, 2017));
  193.     //k2->Dodaj(&Napravi(20, 3, 2017));
  194.     //k2->Dodaj(&Napravi(19, 3, 2017));
  195.     //k2->Dodaj(&Napravi(8, 3, 2017));
  196.     //k2->Dodaj(&Napravi(17, 3, 2017));
  197.     //k2->ForEach([](Datum p)
  198.     //{
  199.     //  p->Ispis();
  200.     //});
  201.     //cout << endl;
  202.     //delete k2;
  203.     ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  204.     /*
  205.     U istom programu definišite
  206. a)  Kolekciju k1 za integer
  207. b)  Kolekciju k2 za float
  208. c)  Kolekciju k3 za Datum*
  209. d)  Kolekciju k4 za Datum
  210.     */
  211.     Kolekcija <int> k1;
  212.     Kolekcija <float> k2;
  213.     Kolekcija <Datum*>k3;
  214.     Kolekcija <Datum> k4;
  215.  
  216.     system("PAUSE");
  217. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement