avr39ripe

Pv913ConstExplicitMadness

May 27th, 2020
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.80 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. class Test
  4. {
  5. public:
  6.     int val;
  7.     bool flag;
  8.     int getVal() { return val; };
  9.     bool getFlag() { return flag; };
  10. };
  11.  
  12. class DynArray
  13. {
  14.     int* arr;
  15.     int size;
  16. public:
  17.     DynArray(int pSize) : arr{ new int[pSize] {} }, size{ pSize } {std::cout << "DynArr constructed for " << size << " elements, for " << this << '\n'; };
  18.     DynArray() : DynArray(5) {};
  19.     DynArray(const DynArray& obj);
  20.     int getElem(int idx) { return arr[idx]; };
  21.     void setElem(int idx, int val) { arr[idx] = val; };
  22.     void print();
  23.     void randomize();
  24.     ~DynArray() { if (arr) { std::cout << "this->arr = " << this->arr << '\n'; delete[] arr; }; std::cout << "DynArr destructed for " << size << " elements, for " << this << '\n'; };
  25. };
  26.  
  27. void DynArray::print()
  28. {
  29.     for (int i{ 0 }; i < size; ++i)
  30.     {
  31.         std::cout << arr[i] << ' ';
  32.     }
  33.     std::cout << '\n';
  34. }
  35.  
  36. void DynArray::randomize()
  37. {
  38.     for (int i{ 0 }; i < size; ++i)
  39.     {
  40.         arr[i]=rand()%10;
  41.     }
  42. }
  43.  
  44. DynArray::DynArray(const DynArray& obj)
  45.     : arr{ new int[obj.size] {} }, size{ obj.size }
  46. {
  47.     for (int i{ 0 }; i < size; ++i)
  48.     {
  49.         arr[i] = obj.arr[i];
  50.     };
  51.  
  52.     std::cout << "DynArr COPY constructed for " << size << " elements, for " << this << '\n';
  53. };
  54.  
  55.  
  56.  
  57. void printDynArrEl(DynArray& arr, int idx)
  58. {
  59.     std::cout << arr.getElem(idx) << ' ';
  60. }
  61.  
  62.  
  63. DynArray mkArray(int size)
  64. {
  65.     DynArray arr{ size };
  66.     arr.randomize();
  67.     return arr;
  68. }
  69.  
  70.  
  71. class Fraction
  72. {
  73.     int numerator;
  74.     int denominator;
  75.     //mutable bool cached;
  76.     //mutable int cachedMegaVal;
  77. public:
  78.     Fraction(const Fraction& fract) : numerator{ fract.numerator }, denominator{fract.denominator} { std::cout << "Fraction COPY constructed for " << this << '\n'; };
  79.     Fraction(int num, int denom=1) : numerator{ num }, denominator{ denom ? denom : 1 } { std::cout << "Fraction constructed for " << this << '\n'; };
  80.     Fraction() : Fraction(1) {};
  81.     ~Fraction() { std::cout << "Fraction destructed for " << this << '\n'; };
  82.     void setNumerator(int num) { numerator = num; };
  83.     int getNumerator() const { return numerator; };
  84.     void setDenominator(int denom) { denominator = denom ? denom : 1; };
  85.     int getDenominator() const { return denominator; };
  86.     void print() const;
  87.     Fraction& mul(const Fraction& fract) { numerator *= fract.getNumerator(); denominator *= fract.getDenominator(); return *this; };
  88.     Fraction& mul(int num) { numerator *= num; return *this; };
  89.     Fraction& div(const Fraction& fract) { numerator *= fract.getDenominator(); denominator *= fract.getNumerator(); return *this; };
  90.     Fraction& div(int num) { denominator *= num; return *this; };
  91.     //int megaCalc() const { /* hard calculation that takes looooong time to complete*/};
  92.     //int getMegaVal() const { if (!cached) { cachedMegaVal = megaCalc(); cached = true; }; return cachedMegaVal; };
  93. };
  94.  
  95. void Fraction::print() const
  96. {
  97.     std::cout << '(' << numerator << " / " << denominator << ")";
  98.     //std::cout << '(' << getNumerator() << " / " << getDenominator() << ")";
  99. };
  100.  
  101. //void foo(int& ref)
  102. //{
  103. //    int val;
  104. //    ref = 0;
  105. //    std::cout << ref++ << '\n';
  106. //}
  107.  
  108.  
  109. int main()
  110. {
  111.     //char* const str{ new char[14] {"Hello, world"} };
  112.     //char* const str1{ new char[14] };
  113.  
  114.     //char* src{ str };
  115.     //char* dest{ str1 };
  116.  
  117.     //while( *src)
  118.     //{
  119.     //    *dest++ = *src++;
  120.     //}
  121.     //*dest = '\0';
  122.  
  123.     //std::cout << str << '\n' << str1 << '\n';
  124.  
  125.     //str1[0] = '#';
  126.  
  127.     //std::cout << str << '\n' << str1 << '\n';
  128.     //std::cout << (void*)str << '\n' << (void*)str1 << '\n';
  129.  
  130.     //delete[] str1;
  131.     //delete[] str;
  132.     //return 0;
  133.  
  134.     //DynArray arr1{ DynArray{ 65 } }; //arr1.arr //arr1.size <- this = &arr1
  135.  
  136.     //arr1 = 'A';
  137.  
  138.     //arr1.print();
  139.     //arr1.randomize();
  140.     //std::cout << "arr1\n";
  141.     //arr1.print();
  142.  
  143.     //DynArray arr2.{arr1}; //arr2.arr <= arr1.arr //arr2.size <= arr1.size <- this = &arr2
  144.  
  145.     //std::cout << "arr2\n";
  146.     //arr2.print();
  147.     //arr2.setElem(0, 333);
  148.  
  149.     //std::cout << "arr1\n";
  150.     //arr1.print();
  151.     //std::cout << "arr2\n";
  152.     //arr2.print();
  153.  
  154.     //int x;
  155.     ////int& ref;
  156.     ////ref = x;
  157.     //foo(x);
  158.     //foo(x);
  159.     //std::cout << x << '\n';
  160.  
  161.     //Fraction a{ 1,3 };
  162.     //const int answer{ 42 };
  163.     //answer = 33;
  164.  
  165.     Fraction a{ 2,3 };
  166.     const Fraction b{1,3};
  167.  
  168.     a.mul(b);
  169.     a.print(); std::cout << '\n';
  170.     //b = a;
  171.     //b.print(); std::cout << '\n';
  172.  
  173.     //Fraction c{a};
  174.  
  175.  
  176.     //a.print(); std::cout << '\n';
  177.    //b.print(); std::cout << '\n';
  178.     //c.print(); std::cout << '\n';
  179.  
  180.     //a.mul(b).mul(b);
  181.     //a.mul(2).mul(2);
  182.     //a.print(); std::cout << '\n';
  183.     //b.print(); std::cout << '\n';
  184.     //b.div(4);
  185.     //b.print(); std::cout << '\n';
  186.  
  187. }
Advertisement
Add Comment
Please, Sign In to add comment