58 / 16 / 26
Регистрация: 07.02.2015
Сообщений: 346
1

Реализовать класс векторов, переопределив операции сложения, вычитания, умножения

31.03.2015, 21:15. Показов 4240. Ответов 2
Метки нет (Все метки)

Реализовать класс векторов, переопределив операции сложения, вычитания, умножения векторов и операторы равенства/неравенства. Учесть операции, где один из операндов – вещественное или целое число. Генерировать исключение, в случае не совпадения размерности векторов при выполнении операций...

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
Using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace labwork3
{
    class Vector
    {
        int[] vect;
 
        public Vector() 
        { 
            vect = null; 
        }
        public Vector(int[] v) 
        { 
            vect = v; 
        }
 
        public Vector(int n)
        { 
            vect = new int[n];
            for (int i = 0; i < n; i++) vect[i] = i;
        }
 
        public static bool operator ==(Vector op1, Vector op2)
        {
            if (op1.vect == null || op2.vect == null)
            {
                Console.WriteLine("Один или оба вектора не существует.");
                return false;
            }
            if (op1.vect.Length == op2.vect.Length) return true;
            return false;
        }
        public static bool operator !=(Vector op1, Vector op2)
        {
            if (op1.vect == null || op2.vect == null)
            {
                Console.WriteLine("Один или оба вектора не существует.");
                return false;
            }
            if (op1.vect.Length != op2.vect.Length) return true;
            return false;
        }
        public static Vector operator +(Vector op1, Vector op2)
        {
            try
            {
                if (op1 != op2) throw new IndexOutOfRangeException();
            }
            catch (IndexOutOfRangeException)
            {
                Console.WriteLine("Длины векторов не равны, сложение невозможно.");
            }
 
            Vector op = new Vector(op1.vect.Length);
            for (int i = 0; i < op1.vect.Length; i++)
                op.vect[i] = op1.vect[i] + op2.vect[i];
 
                return op;
        }
        public static Vector operator -(Vector op1, Vector op2)
        {
            try
            {
                if (op1 != op2) throw new IndexOutOfRangeException();
            }
            catch (IndexOutOfRangeException)
            {
                Console.WriteLine("Длины векторов не равны, вычитание невозможно.");
            }
 
            Vector op = new Vector(op1.vect.Length);
            for (int i = 0; i < op1.vect.Length; i++)
                op.vect[i] = op1.vect[i] - op2.vect[i];
 
            return op;
        }
        public static int operator *(Vector op1, Vector op2)
        {
            try
            {
                if (op1 != op2) throw new IndexOutOfRangeException();
            }
            catch (IndexOutOfRangeException)
            {
                Console.WriteLine("Длины векторов не равны, умножение невозможно.");
            }
 
            int op=0;
            for (int i = 0; i < op1.vect.Length; i++)
                op += op1.vect[i] * op2.vect[i];
 
            return op;
        }
        public void show() 
        {
            for (int i = 0; i < vect.Length; i++) Console.Write(vect[i] + "\t");
            Console.WriteLine();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            int k=6;
            Vector ob1 = new Vector(k), ob2 = new Vector(k), ob3;
            ob1.show();
            ob2.show();
            ob3 = ob1 + ob2;
            ob3.show();
            ob3 = ob1 - ob2;
            ob3.show();
            ob3 = ob1 * ob2;--------Ошибка    3   Неявное преобразование типа "int" в "labwork3.Vector" невозможно    C:\Users\User\Desktop\Гетерогенные программные платформы\Лабораторная 3\labwork3\labwork3\Program.cs    117 19  labwork3
 
            ob3.show();
            Console.ReadLine();
            Console.ReadKey(true);
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2015, 21:15
Ответы с готовыми решениями:

Реализовать класс MyArray, который бы поддерживал индексные операции, операции сложения, вычитания, умножения, деления
Необходимо реализовать класс MyArray, который бы поддерживал индексные операции, операции сложения,...

Создать класс для работы с двоичными числами реализовать в нем операцию сложения, умножения, вычитания
создать класс для работы с двоичными числами реализовать в нем операцию сложения умнежения вычитания

Перегрузить операции сложения, вычитания, деления и умножения комплексных чисел
Доброго времени суток. Помогите разобраться с перегрузкой метода. Суть в том, что необходимо...

Разработать класс, перегрузить в нем операции сложения, вычитания и деления
Пожалуйста помогите решить задачу: Требуется разработать класс, перегрузить в нем указанные...

2
Эксперт .NETАвтор FAQ
10370 / 5101 / 1824
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
31.03.2015, 21:18 2
redseven,
C#
1
2
3
ob3 = ob1 * ob2;
-->
int product = ob1 * ob2;
1
58 / 16 / 26
Регистрация: 07.02.2015
Сообщений: 346
31.03.2015, 21:32  [ТС] 3
Спасибо большое!)))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2015, 21:32
Помогаю со студенческими работами здесь

Разработать класс "Матрица" (перегрузить операции сложения, умножения, умножения на число)
Разработать класс матрица. Определить в нем конструктор перегрузить арифметические операции...

Описать класс "Многочлен" и перегрузку операций для этого класса — сложения, умножения, вычитания
Доброго времени суток)) Как можно описать класс &quot;Многочлен&quot; ну и перегрузку операций для этого...

Напишите свой класс, реализующий работу с комплексными числами. Операции сложения, вычитания, деления и умножения должны
Напишите свой класс, реализующий работу с комплексными числами. Операции сложения, вычитания,...

Перегрузка операторов сложения, вычитания и умножения двух векторов
Помогите пожалуйста. Мне надо сделать перегрузку сложения двух векторов, вычитания дух векторов,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru