kutuzzzov

Задачи на 17 сентября

Sep 17th, 2025
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.40 KB | None | 0 0
  1. Задача 1: Перегрузка оператора + для класса Complex
  2. Условие: Создайте класс Complex, представляющий комплексное число. Перегрузите оператор +, чтобы можно было складывать два комплексных числа.
  3.  
  4. #include <iostream>
  5. using namespace std;
  6.  
  7. class Complex {
  8. private:
  9.     double real, imag;
  10.  
  11. public:
  12.     Complex(double r = 0, double i = 0) : real(r), imag(i) {}
  13.  
  14.     // Перегрузка оператора + здесь
  15.    
  16.     void print() const {
  17.         cout << "(" << real << " + " << imag << "i)" << endl;
  18.     }
  19. };
  20.  
  21. int main() {
  22.     Complex c1(3, 4);
  23.     Complex c2(1, 2);
  24.  
  25.     Complex c3 = c1 + c2;
  26.     c3.print(); // Вывод: (4 + 6i)
  27.  
  28.     return 0;
  29. }
  30.  
  31.  
  32. Задача 2: Перегрузка оператора - для класса Vector
  33. Условие: Создайте класс Vector, представляющий вектор в трёхмерном пространстве. Перегрузите оператор -, чтобы можно было вычитать один вектор из другого.
  34.  
  35. #include <iostream>
  36. using namespace std;
  37.  
  38. class Vector {
  39. private:
  40.     double x, y, z;
  41.  
  42. public:
  43.     Vector(double x = 0, double y = 0, double z = 0) : x(x), y(y), z(z) {}
  44.  
  45.     // Перегрузка оператора - здесь    
  46.  
  47.     void print() const {
  48.         cout << "(" << x << ", " << y << ", " << z << ")" << endl;
  49.     }
  50. };
  51.  
  52. int main() {
  53.     Vector v1(5, 6, 7);
  54.     Vector v2(1, 2, 3);
  55.  
  56.     Vector v3 = v1 - v2;
  57.     v3.print(); // Вывод: (4, 4, 4)
  58.  
  59.     return 0;
  60. }
  61.  
  62.  
  63. Задача 3: Перегрузка оператора * для скалярного умножения
  64. Условие: Перегрузите оператор *, чтобы можно было умножать вектор на скаляр.
  65.  
  66. #include <iostream>
  67. using namespace std;
  68.  
  69. class Vector {
  70. private:
  71.     double x, y, z;
  72.  
  73. public:
  74.     Vector(double x = 0, double y = 0, double z = 0) : x(x), y(y), z(z) {}
  75.  
  76.     // Перегрузка оператора * ниже
  77.  
  78.     void print() const {
  79.         cout << "(" << x << ", " << y << ", " << z << ")" << endl;
  80.     }
  81. };
  82.  
  83. int main() {
  84.     Vector v(1, 2, 3);
  85.     Vector scaled = v * 2;
  86.  
  87.     scaled.print(); // Вывод: (2, 4, 6)
  88.  
  89.     return 0;
  90. }
  91.  
  92. Задача 4: Перегрузка оператора << для вывода объекта
  93. Условие: Перегрузите оператор <<, чтобы можно было выводить объект класса Person с помощью cout.
  94.  
  95. #include <iostream>
  96. #include <string>
  97. using namespace std;
  98.  
  99. class Person {
  100. private:
  101.     string name;
  102.     int age;
  103.  
  104. public:
  105.     Person(string n, int a) : name(n), age(a) {}
  106.  
  107.     // Дружественная функция для перегрузки оператора << здесь
  108.    
  109. };
  110.  
  111. int main() {
  112.     Person p("Alice", 30);
  113.     cout << p << endl; // Вывод: Name: Alice, Age: 30
  114.  
  115.     return 0;
  116. }
  117.  
  118. Задача 5: Перегрузка оператора == для сравнения объектов
  119. Условие: Перегрузите оператор ==, чтобы можно было сравнивать два объекта класса Point.
  120.  
  121. #include <iostream>
  122. using namespace std;
  123.  
  124. class Point {
  125. private:
  126.     int x, y;
  127.  
  128. public:
  129.     Point(int x = 0, int y = 0) : x(x), y(y) {}
  130.  
  131.     // Перегрузка оператора == здесь
  132.  
  133. };
  134.  
  135. int main() {
  136.     Point p1(1, 2);
  137.     Point p2(1, 2);
  138.     Point p3(3, 4);
  139.  
  140.     cout << (p1 == p2) << endl; // Вывод: 1 (true)
  141.     cout << (p1 == p3) << endl; // Вывод: 0 (false)
  142.  
  143.     return 0;
  144. }
  145.  
  146. Задача 6: Перегрузка оператора != через оператор ==
  147. Условие: Перегрузите оператор !=, используя уже определённый оператор ==.
  148.  
  149. #include <iostream>
  150. using namespace std;
  151.  
  152. class Point {
  153. private:
  154.     int x, y;
  155.  
  156. public:
  157.     Point(int x = 0, int y = 0) : x(x), y(y) {}
  158.  
  159.     bool operator==(const Point& other) const {
  160.         return (x == other.x) && (y == other.y);
  161.     }
  162.  
  163.     // Перегрузка оператора != через оператор == здесь
  164. };
  165.  
  166. int main() {
  167.     Point p1(1, 2);
  168.     Point p2(1, 2);
  169.     Point p3(3, 4);
  170.  
  171.     cout << (p1 != p2) << endl; // Вывод: 0 (false)
  172.     cout << (p1 != p3) << endl; // Вывод: 1 (true)
  173.  
  174.     return 0;
  175. }
  176.  
  177. Задача 7: Перегрузка унарного минуса
  178. Условие: Перегрузите унарный минус для класса Vector.
  179.  
  180. #include <iostream>
  181. using namespace std;
  182.  
  183. class Vector {
  184. private:
  185.     double x, y, z;
  186.  
  187. public:
  188.     Vector(double x = 0, double y = 0, double z = 0) : x(x), y(y), z(z) {}
  189.  
  190.     // Перегрузка унарного минуса здесь
  191.  
  192.     void print() const {
  193.         cout << "(" << x << ", " << y << ", " << z << ")" << endl;
  194.     }
  195. };
  196.  
  197. int main() {
  198.     Vector v(1, 2, 3);
  199.     Vector negV = -v;
  200.  
  201.     negV.print(); // Вывод: (-1, -2, -3)
  202.  
  203.     return 0;
  204. }
  205.  
  206. Задача 8: Перегрузка оператора присваивания =
  207. Условие: Перегрузите оператор присваивания для класса String.
  208.  
  209. #include <iostream>
  210. #include <cstring>
  211. using namespace std;
  212.  
  213. class String {
  214. private:
  215.     char* data;
  216.  
  217. public:
  218.     String(const char* str = "") {
  219.         data = new char[strlen(str) + 1];
  220.         strcpy(data, str);
  221.     }
  222.  
  223.     ~String() {
  224.         delete[] data;
  225.     }
  226.  
  227.     // Перегрузка оператора присваивания = здесь
  228.  
  229.     void print() const {
  230.         cout << data << endl;
  231.     }
  232. };
  233.  
  234. int main() {
  235.     String s1("Hello");
  236.     String s2("World");
  237.  
  238.     s1 = s2;
  239.     s1.print(); // Вывод: World
  240.  
  241.     return 0;
  242. }
  243.  
  244. Задача 9: Перегрузка оператора ++ (префиксный и постфиксный)
  245. Условие: Перегрузите оператор ++ для класса Counter.
  246.  
  247. #include <iostream>
  248. using namespace std;
  249.  
  250. class Counter {
  251. private:
  252.     int value;
  253.  
  254. public:
  255.     Counter(int v = 0) : value(v) {}
  256.  
  257.     // Префиксный ++ здесь
  258.  
  259.     // Постфиксный ++ здесь
  260.  
  261.     void print() const {
  262.         cout << value << endl;
  263.     }
  264. };
  265.  
  266. int main() {
  267.     Counter c(5);
  268.  
  269.     (++c).print(); // Вывод: 6
  270.     (c++).print(); // Вывод: 6
  271.     c.print();     // Вывод: 7
  272.  
  273.     return 0;
  274. }
  275.  
  276. Задача 10: Перегрузка оператора индексации []
  277. Условие: Перегрузите оператор [] для доступа к элементам массива.
  278.  
  279. #include <iostream>
  280. using namespace std;
  281.  
  282. class Array {
  283. private:
  284.     int* data;
  285.     int size;
  286.  
  287. public:
  288.     Array(int s) : size(s) {
  289.         data = new int[size];
  290.     }
  291.  
  292.     ~Array() {
  293.         delete[] data;
  294.     }
  295.  
  296.     // Перегрузка оператора индексации [] здесь
  297.  
  298.     void print() const {
  299.         for (int i = 0; i < size; ++i) {
  300.             cout << data[i] << " ";
  301.         }
  302.         cout << endl;
  303.     }
  304. };
  305.  
  306. int main() {
  307.     Array arr(5);
  308.     for (int i = 0; i < 5; ++i) {
  309.         arr[i] = i + 1;
  310.     }
  311.  
  312.     arr.print(); // Вывод: 1 2 3 4 5
  313.  
  314.     return 0;
  315. }
Advertisement
Add Comment
Please, Sign In to add comment