avr39ripe

PV913ClassesTalkAssorted

Jun 9th, 2020
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.06 KB | None | 0 0
  1. #include <iostream>
  2.  
  3.  
  4. class Test
  5. {
  6.     int num{100};
  7.     char symbol{'A'};
  8. public:
  9.     /*Test() : Test(-100500, 'Z') {};
  10.     Test(int pNum, char pSymb) : num{ -pNum }, symbol{ pSymb } {};*/
  11.     char getSymbol()const { return symbol; }
  12.     int getNum()const { return num; };
  13. };
  14.  
  15. class pbRecord
  16. {
  17.     char* name;
  18.     uint32_t nameSize;
  19. public:
  20.     pbRecord() : name{ nullptr } {};
  21.     /*pbRecord() : name{ new char[50]{} } {};*/
  22.     pbRecord(const char* namePar)
  23.         : name{ new char[strlen(namePar)+1] }
  24.     {
  25.             strcpy_s(name, strlen(namePar) + 1, namePar);
  26.     }
  27.     void setName(const char* namePar)
  28.     {
  29.         delete[] name;
  30.        
  31.  
  32.         name = new char[strlen(namePar) + 1];
  33.         strcpy_s(name, strlen(namePar) + 1, namePar);
  34.     };
  35.  
  36.     void clearName() { delete[] name; name = nullptr; };
  37.  
  38.     ~pbRecord() { delete[] name; };
  39. };
  40.  
  41.  
  42.  
  43.  
  44. class Fraction
  45. {
  46.     int numerator;
  47.     int denominator;
  48.     int gcd(int a, int b);
  49.     void reduce();
  50. public:
  51.     Fraction(const Fraction& fract)
  52.         : numerator{ fract.numerator }, denominator{ fract.denominator }
  53.     {
  54.         reduce();
  55.         std::cout << "Fraction COPY constructed for " << this << '\n';
  56.     };
  57.     Fraction(int num, int denom)
  58.         : numerator{ num }, denominator{ denom ? denom : 1 }
  59.     {
  60.         reduce();
  61.         std::cout << "Fraction constructed for " << this << '\n';
  62.     };
  63.     Fraction() : Fraction(1, 1) {};
  64.     ~Fraction() { std::cout << "Fraction destructed for " << this << '\n'; };
  65.     void setNumerator(int num) { numerator = num; reduce(); };
  66.     int getNumerator() const { return numerator; };
  67.     void setDenominator(int denom) { denominator = denom ? denom : 1; reduce(); };
  68.     int getDenominator() const { return denominator; };
  69.     void print() const;
  70.     Fraction& mul(const Fraction fract) { numerator *= fract.numerator; denominator *= fract.denominator; return *this; };
  71.     Fraction& mul(int num) { numerator *= num; return *this; };
  72.     Fraction& div(const Fraction fract) { numerator *= fract.denominator; denominator *= fract.numerator; return *this; };
  73.     Fraction& div(int num) { denominator *= num; return *this; };
  74.     //Fraction operator*(const Fraction& rhs) const;
  75.     friend Fraction operator*(const Fraction& lhs, const Fraction& rhs); // a * b
  76.     friend Fraction operator*(const Fraction& lhs, int rhs); // a * x
  77.     friend Fraction operator*(int lhs, const Fraction& rhs); // y * b
  78.     friend Fraction operator/(const Fraction& lhs, const Fraction& rhs);
  79.     friend Fraction operator+(const Fraction& lhs, const Fraction& rhs);
  80.     friend Fraction operator-(const Fraction& lhs, const Fraction& rhs);
  81.     friend std::ostream& operator<<(std::ostream& out, const Fraction& rhs);
  82.     //friend std::istream& operator>>(std::istream& in, Fraction& rhs);
  83. };
  84.  
  85. //Fraction Fraction::operator*(const Fraction& rhs) const
  86. //{
  87. //   return Fraction{ numerator * rhs.numerator,  denominator * rhs.denominator };
  88. //}
  89.  
  90. Fraction operator*(const Fraction& lhs, const Fraction& rhs)
  91. {
  92.     return Fraction{ lhs.numerator * rhs.numerator,  lhs.denominator * rhs.denominator };
  93. }
  94.  
  95. Fraction operator*(const Fraction& lhs, int rhs)
  96. {
  97.     return Fraction{ lhs.numerator * rhs,  lhs.denominator };
  98. }
  99.  
  100. Fraction operator*(int lhs, const Fraction& rhs)
  101. {
  102.     return rhs * lhs;
  103. }
  104.  
  105. Fraction operator/(const Fraction& lhs, const Fraction& rhs)
  106. {
  107.     return Fraction{ lhs.numerator * rhs.denominator, lhs.denominator * rhs.numerator };
  108. }
  109.  
  110. Fraction operator+(const Fraction& lhs, const Fraction& rhs)
  111. {
  112.     return Fraction{ lhs.numerator * rhs.denominator + rhs.numerator * lhs.denominator, rhs.denominator * lhs.denominator };
  113. }
  114.  
  115. Fraction operator-(const Fraction& lhs, const Fraction& rhs)
  116. {
  117.     return Fraction{ lhs.numerator * rhs.denominator - rhs.numerator * lhs.denominator, rhs.denominator * lhs.denominator };
  118. }
  119.  
  120. //Fraction operator*(const Fraction& lhs, const Fraction& rhs)
  121. //{
  122. //    return Fraction{ lhs.getNumerator() * rhs.getNumerator(),  lhs.getDenominator() * rhs.getDenominator() };
  123. //}
  124.  
  125. //std::ostream& operator<<(std::ostream& out, const Fraction& rhs)
  126. //{
  127. //    out << '(' << rhs.numerator << " / " << rhs.denominator << ')';
  128. //    return out;
  129. //}
  130.  
  131. std::ostream& operator<<(std::ostream& out, const Fraction& rhs)
  132. {
  133.     if (rhs.numerator == rhs.denominator)
  134.     {
  135.         out << 1;
  136.         return out;
  137.     }
  138.  
  139.     if (rhs.denominator == 1)
  140.     {
  141.         out << rhs.numerator;
  142.         return out;
  143.     }
  144.  
  145.     out << '(' << rhs.numerator << " / " << rhs.denominator << ')';
  146.     return out;
  147. }
  148. //
  149. //std::istream& operator>>(std::istream& in, Fraction& rhs)
  150. //{
  151. //    in >> rhs.numerator;
  152. //    in >> rhs.denominator;
  153. //    rhs.denominator = (rhs.denominator ? rhs.denominator : 1);
  154. //    rhs.reduce();
  155. //    return in;
  156. //}
  157.  
  158. int Fraction::gcd(int a, int b)
  159. {
  160.     while (b)
  161.     {
  162.         a %= b;
  163.         std::swap(a, b);
  164.     }
  165.     return a;
  166. }
  167.  
  168. void Fraction::reduce()
  169. {
  170.     int gcdVal{ gcd(numerator, denominator) };
  171.     numerator /= gcdVal;
  172.     denominator /= gcdVal;
  173.  
  174.     if (denominator < 0 and numerator < 0)
  175.     {
  176.         denominator *= -1;
  177.         numerator *= -1;
  178.     }
  179. }
  180. void Fraction::print() const
  181. {
  182.     std::cout << '(' << numerator << " / " << denominator << ")";
  183. };
  184.  
  185. inline int max(int a, int b) { return a > b ? a : b; };
  186.  
  187. int main()
  188. {
  189.     struct stringM
  190.     {
  191.         char* string;
  192.         int size;
  193.     };
  194.    
  195.     stringM text[100];
  196.  
  197.  
  198.     char** text{ new char* [100]{} };
  199.     int* textSize{ new int[100]{} };
  200.     text[0] = new char[100]{ "Hello, c++!" };
  201.     textSize[0] = 100;
  202.  
  203.     std::cout << text[0] << '\n';
  204.     text[1] = new char[100]{ "Hello, c++! Again! Additional string!" };
  205.     std::cout << text[1] << '\n';
  206.     //text[0][0] = '\0';
  207.     delete[] text[0];
  208.     text[0] = nullptr;
  209.     text[0] = new char[100]{ "Hello, c#!! :) :)" };
  210.     std::cout << text[0] << '\n';
  211.  
  212.  
  213.     return 0;
  214.  
  215.  
  216.     //int a,sum;
  217.     //std::cin >> a;
  218.     //for (int i = a; i < 100; i++)
  219.     //{
  220.     //    sum += i; // sum = sum + i;
  221.     //}
  222.     //std::cout << sum << '\n';
  223.  
  224.     Test tst;
  225.     std::cout << tst.getNum();
  226.     std::cout << tst.getSymbol();
  227.  
  228.     return 0;
  229.  
  230.  
  231.     int e{ 10 };
  232.     int r{ 20 };
  233.     //int z = max(e, r);
  234.     int z = e > r ? e : r;
  235.  
  236.  
  237.  
  238.     const Fraction a{ 2,16 };
  239.     const Fraction b{ 2,4 };
  240.     Fraction k{ 5,8 };
  241.     int x{ 42 };
  242.     Fraction c{ 4,8 };
  243.  
  244.  
  245.     //c = operator*(a,b);
  246.     //c = a.operator*(b);
  247.     /*c = a * b;
  248.     c = a * x;*/
  249.  
  250.     std::cout << "x = " << x << '\n';
  251.  
  252.  
  253.     c = a * b * k;
  254.  
  255.  
  256.     std::cout << '\n';
  257.  
  258.     //c.print();
  259.  
  260.     std::cout << "Fraction a = " << a << '\n';
  261.     std::cout << "Fraction b = " << b << '\n' << "Fraction k = " << k << '\n';
  262.     std::cout << "Fraction c = " << c << '\n';
  263.  
  264.     std::cout << '\n';
  265.  
  266.     std::cout << "Fraction a = ";
  267.     a.print();
  268.     std::cout << '\n' << "Fraction b = ";
  269.     b.print();
  270.     std::cout << '\n' << "Fraction k = ";
  271.     k.print();
  272.     std::cout << '\n' << "Fraction c = ";
  273.     c.print();
  274.     std::cout << '\n';
  275.  
  276.     std::cout << '\n';
  277. }
Advertisement
Add Comment
Please, Sign In to add comment