Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Triad {
- protected:
- int x, y, z;
- public:
- Triad() {
- x = y = z = 0;
- }
- Triad(int X, int Y, int Z) {
- x = X;
- y = Y;
- z = Z;
- }
- bool isEqual(Triad t) {
- if (x == t.x && y == t.y && z == t.z) {
- return true;
- }
- return false;
- }
- Triad operator+ (int t) {
- Triad result;
- result.x = x + t;
- result.y = y + t;
- result.z = z + t;
- return result;
- }
- Triad operator* (int t) {
- Triad result;
- result.x = x * t;
- result.y = y * t;
- result.z = z * t;
- return result;
- }
- void show() {
- cout << "Ваша тройка чисел: " << x << ' ' << y << ' ' << z << endl;
- }
- };
- class Vector3D : public Triad {
- public:
- Vector3D() {
- x = y = z = 0;
- }
- Vector3D (int X, int Y, int Z) {
- x = X;
- y = Y;
- z = Z;
- }
- // Сложение двух векторов
- Vector3D operator+ (Vector3D t) {
- Vector3D result;
- result.x = x + t.x;
- result.y = y + t.y;
- result.z = z + t.z;
- return result;
- }
- // Скалярное произведение векторов
- int operator* (Vector3D t) {
- int result;
- result = x * t.x + y * t.y + z * t.z;
- return result;
- }
- void show() {
- cout << "Ваш вектор: " << x << ' ' << y << ' ' << z << endl;
- }
- };
- int main() {
- setlocale(LC_ALL, "Russian");
- cout << "Введите тройку чисел (через пробел): ";
- int x, y, z;
- cin >> x >> y >> z;
- cout << endl;
- Triad a(x, y, z); Vector3D b(x, y, z);
- cout << "Выберите, с чем хотите работать: (1 - тройка чисел, 2 - вектор, 3 - вернуться к вводу): ";
- char choice;
- cin >> choice;
- if (choice == '1') {
- a.show();
- cout << "Выберите, что хотите сделать с Триадой: (\'*\' - увеличить в n раз, \'+\' - увеличить на n, \'?\' - проверить на равенство): ";
- cin >> choice;
- int count, k, l, m;
- if (choice == '?') {
- cout << "Введите новую триаду, с которой сравнивать: ";
- cin >> k >> l >> m;
- Triad c(k, l, m);
- if (a.isEqual(c)) {
- cout << "Триады равны\n";
- } else
- cout << "Не равны!\n";
- }
- Triad result;
- switch (choice) {
- case('*'):
- cout << "Введите в сколько раз увеличить триаду: ";
- cin >> count;
- result = a * count;
- result.show();
- break;
- case('+'):
- cout << "Введите на сколько увеличить триаду: ";
- cin >> count;
- result = a + count;
- result.show();
- break;
- }
- } else if (choice == '2') {
- b.show();
- cout << "Выберите, что хотите сделать с вектором: (\'*\' - скалярное произведение, \'+\' - сложить два вектора: ";
- cin >> choice;
- cout << "Введите второй вектор: ";
- int q, w, e;
- cin >> q >> w >> e;
- Vector3D c(q, w, e);
- int result;
- Vector3D result_vec;
- switch (choice) {
- case('*'):
- result = b * c;
- cout << result << endl;
- break;
- case('+'):
- result_vec = b + c;
- result_vec.show();
- break;
- }
- } else {
- main();
- }
- char final_choice;
- cout << "Чтобы продолжить работу, нажмите 1: "; cin >> final_choice;
- if (final_choice == '1') {
- main();
- } else {
- system("pause");
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment