Advertisement
adwas33

Trzeci - Klasy i praktyka

May 8th, 2021
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <iterator>
  5. #include <random>
  6.  
  7. using namespace std;
  8. template<class Re,class Im>
  9. class Zespolona{
  10. public:
  11. Zespolona(Re rzeczywiste, Im urojona) : rzeczywiste(rzeczywiste), urojona(urojona) {}
  12.  
  13. Zespolona(Re rzeczywiste) : rzeczywiste(rzeczywiste) {}
  14.  
  15. Zespolona() {}
  16. bool operator==(const Zespolona &przyslana) const {
  17. return rzeczywiste == przyslana.rzeczywiste &&
  18. urojona == przyslana.urojona;
  19. }
  20.  
  21. bool operator!=(const Zespolona &przyslana) const {
  22. return !(przyslana== *this);
  23. }
  24.  
  25. friend std::ostream &operator<<(std::ostream &os, const Zespolona &zespolona) {
  26. os << "(" << zespolona.rzeczywiste << "," << zespolona.urojona<<")";
  27. return os;
  28. }
  29.  
  30. Re getRzeczywiste() const {
  31. return rzeczywiste;
  32. }
  33.  
  34. void setRzeczywiste(Re rzeczywiste) {
  35. Zespolona::rzeczywiste = rzeczywiste;
  36. }
  37.  
  38. Im getUrojona() const {
  39. return urojona;
  40. }
  41.  
  42. void setUrojona(Im urojona) {
  43. Zespolona::urojona = urojona;
  44. }
  45.  
  46.  
  47. private:
  48. Re rzeczywiste;
  49. Im urojona;
  50.  
  51.  
  52. };
  53. template <class T>
  54. ostream & operator<<(ostream &os,vector<T> &wektor);
  55. int main() {
  56. Zespolona<short,long> test;
  57.  
  58. vector<Zespolona<int,int>> zespolone(10, {5, 4});
  59. for(auto &all:zespolone)
  60. {
  61. cout<<all<<" ";
  62. }
  63. cout<<endl;
  64. vector<vector<Zespolona<double,double>>> dwa_wymiary_zespolone(10);
  65. uniform_real<double> generuj(-20,40);
  66. default_random_engine silnik;
  67.  
  68. for(int i=0;i<10;i++)
  69. {
  70.  
  71. for(int j=0;j<5;j++)
  72. {
  73. dwa_wymiary_zespolone[i].push_back({generuj(silnik),generuj(silnik)});
  74. }
  75. }
  76. for(auto &all:dwa_wymiary_zespolone)
  77. {
  78. cout<<all<<endl;
  79. }
  80. vector<Zespolona<double,double>> polaczenie;
  81. for(auto& all:dwa_wymiary_zespolone)
  82. {
  83. for(auto &kazdy:all)
  84. {
  85. polaczenie.push_back(kazdy);
  86. }
  87. }
  88. sort(polaczenie.begin(),polaczenie.end(),[](Zespolona<double,double> pierwsza,Zespolona<double,double> druga)->bool{
  89. return druga.getRzeczywiste()>pierwsza.getRzeczywiste();
  90. });
  91. cout<<"Posortuje obiekty wzgledem rosnacej czesci rzeczywistej "<<endl;
  92. for(auto &all:polaczenie)
  93. {
  94. cout<<all<<endl;
  95. }
  96. //Napisze teraz tablicę wskaźników na obiekty
  97. vector<Zespolona<int,int>*> wskazniki(2); // null , null
  98. wskazniki[0]=&zespolone[0];//[]
  99. wskazniki[1]=&zespolone[1];
  100. wskazniki.push_back(&zespolone[2]);//3
  101. wskazniki.push_back(&zespolone[3]);//4
  102. auto iterator=zespolone.begin()+4;
  103. wskazniki.push_back(&*iterator);//& * iterator to jest wzięcie adresu wyłuskania iteratora
  104. wskazniki.push_back(&*(iterator+1));
  105. wskazniki.push_back(new Zespolona<int,int>(23,43));
  106. wskazniki.push_back(new Zespolona<int,int>(22,41));
  107.  
  108. for(auto &all:wskazniki)
  109. {
  110. cout<<*all<<" ";// skoro przechowywujemy adresy to musimy je wyłuskać najpierw operatorem *
  111. }
  112.  
  113.  
  114.  
  115.  
  116. std::cout << "Hello, World!" << std::endl;
  117. return 0;
  118. }
  119. template <class T>
  120. ostream & operator<<(ostream &os,vector<T> &wektor)
  121. {
  122. for(auto &all:wektor)
  123. {
  124. os<<all<<",";
  125. }
  126. return os;
  127.  
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement