Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
1 / 1 / 3
Регистрация: 28.10.2017
Сообщений: 103
1

Перегрузка функций (методов) и операций

30.01.2018, 11:49. Показов 1798. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Мне тут помогли написать код... нужно пояснение полное в коде что тут и как происходит. Само условие выглядит так: Создать заданный в варианте класс. Определить в классе конструкторы, деструктор, необходимые функции и заданные перегруженные операции. Написать программу тестирования, в которой проверяется использование всех перегруженных операций. Класс – время CVector. Дополнительно перегрузить следующие операции: ‐ – разность двух векторов; + – сложение элементов вектора с целым; !=– проверка на неравенство; [] – доступ к элементу в заданной позиции
Сам код:
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;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    public class Vector
    {
        public double x;
        public double y;
 
        public Vector(double x, double y)
        {
            this.x = x;
            this.y = y;
        }
 
        public Vector(double value, Vector direction)
        {
            double k = value / direction.Length;
            this.x = k * direction.x;
            this.y = k * direction.y;
        }
 
        public static Vector operator +(Vector v, int p)
        {
            return new Vector(v.x + p, v.y + p);
        }
 
        public static Vector operator -(Vector v1, Vector v2)
        {
            return new Vector(v1.x - v2.x, v1.y - v2.y);
        }
 
 
        public static bool operator ==(Vector v1, Vector v2)
        {
            if (v1.x != v2.x && v1.y != v2.y)
                return true;
            else
                return false;
        }
 
        public static bool operator !=(Vector v1, Vector v2)
        {
            if (v1.x != v2.x && v1.y != v2.y)
                return true;
            else
                return false;
        }
 
        public static Vector operator *(double k, Vector v)
        {
            return new Vector(v.x * k, v.y * k);
        }
 
        public static Vector operator +(double k, Vector v)
        {
            return new Vector(v.x + k, v.y + k);
        }
 
        public double Length
        {
            get
            {
                return Math.Sqrt(x * x + y * y);
            }
        }
 
        public static Vector Zero
        {
            get { return new Vector(0, 0); }
        }
 
        public void print()
        {
            Console.WriteLine("X={0}, Y={1}", x, y);
        }
        public double test(Vector[] ass, int n)
        {
            return ass[n].x;
        }
 
        public int test(Vector[] ass, double n)
        {
            int foo = Convert.ToInt32(ass[(int)Math.Round(n)].y);
            return foo;
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Vector v1 = new Vector(14, 3);
            Vector v2 = new Vector(11, 5);
            Vector[] nnn = new Vector[3];
            Random rand = new Random();
            for (int i = 0; i < 3; i++)
            {
                int x = rand.Next(10);
                int y = rand.Next(7);
                nnn[i] = new Vector(x, y);
                Console.WriteLine("x {0}, y {1} - i{2} ", nnn[i].x, nnn[i].y, i);
            }
            v1.print();
            v2.print();
            v1 -= v2;
            v1.print();
            v2 += 12;
            v2.print();
            if (v1 != v2)
                Console.WriteLine("!=");
            else
                Console.WriteLine("=");
            Console.WriteLine("Ответ {0}", v1.test(nnn, 2));
            Console.WriteLine("Ответ {0}", v2.test(nnn, 1.45));
            Console.ReadKey();
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.01.2018, 11:49
Ответы с готовыми решениями:

Перегрузка методов и операций.
:wall: Задание:Создайте проект, в котором опишите класс для решения задачи Вашего варианта....

Перегрузка операций с использованием стандартных интерфейсов и методов класса Object
Класс “Материнская плата”. Поля – имя, марка, объем ОП, стоимость.Правилами форума запрещено...

Процедуры и функции. Перегрузка функций (методов) и операторов
Класс  однонаправленный список List. Дополнительно перегрузить следующие операции: &gt;&gt; удалить...

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

5
Заблокирован
30.01.2018, 11:59 2
В принципе, ничего сложного - есть класс Vector. В нем определены конструкторы, методы и реализованы операторы (+ - == != * еще один+)
0
Wanna be serious
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
30.01.2018, 12:28 3
У вас точно по заданию нужно писать на C#? Обычно деструкторы требуются в C++.
0
1 / 1 / 3
Регистрация: 28.10.2017
Сообщений: 103
30.01.2018, 12:42  [ТС] 4
Именно на C#. А вот сам запуск консоли можете объяснить? Как происходит сложение вычитание умножение и деление векторов...... что с чем складывается и зачем i ?
Миниатюры
Перегрузка функций (методов) и операций  
0
Wanna be serious
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
30.01.2018, 12:57 5
Лучший ответ Сообщение было отмечено Apathy2301 как решение

Решение

Для сложения / вычитания / деления, вы перегружаете оператор. На примере сложения видно, что поля экземпляра класса Vector увеличиваются на значение целого числа p, возвращая при этом новый экземпляр класса.
C#
1
2
3
4
public static Vector operator +(Vector v, int p)
{
    return new Vector(v.x + p, v.y + p);
}
Соответственно, в Main вы складываете ваш экземпляр класса Vector с целым числом 12, и изначальные значения 11 и 5 стали соответственно 23 и 17.
C#
1
v2 += 12;
По поводу i в выводе, я не знаю зачем. Если вам он тоже не нужен, можете убрать его:
Меняете это:
C#
1
Console.WriteLine("x {0}, y {1} - i{2} ", nnn[i].x, nnn[i].y, i);
на:
C#
1
Console.WriteLine("x {0}, y {1} - {2} ", nnn[i].x, nnn[i].y, i);
1
62 / 63 / 28
Регистрация: 10.01.2018
Сообщений: 360
30.01.2018, 13:07 6
Цитата Сообщение от Apathy2301 Посмотреть сообщение
Определить в классе конструкторы, деструктор
Реализации деструктора не вижу.

Не по теме:

Цитата Сообщение от Apathy2301 Посмотреть сообщение
Vector[] ass
Не делайте такие сокращения. Препод ведь может англ знать.

0
30.01.2018, 13:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.01.2018, 13:07
Помогаю со студенческими работами здесь

Перегрузка функций и операций
Помогите пожалуйста. Нужно создать прямоугольную матрицу nxm с возможностью инициализации....

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

перегрузка операций и функций
Выполнить перезагрузку перечисленных операций,закрепив за ними соответствующий функциональный...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг...

Перегрузка функций, шаблоны функций Функция определения объемов: шара по его радиусу
Перегрузка функций, шаблоны функций Функция определения объемов: шара по его радиусу (V=4/3пиR2),...

Перегрузка методов
Объясните простым русским языком, почему это так работает. class Program { ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru