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

Перегрузка оператора "+" в матрице

25.07.2012, 14:44. Показов 1793. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
День добрый. Пытаюсь изучать С#. Подскажите, как лучше сделать перегрузку оператора "+". Код рабочий, но выдает глупости при сложении 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
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Matrix m1 = new Matrix(3, 4);
            Matrix m2 = new Matrix(3, 4);
            m1.Rand();
            m1.Show();
            m2.Rand();
            m2.Show();
            Matrix m3 = new Matrix(3, 4);
            m3 = m1 + m2;
            m3.Show();
        }
    }
    class Matrix
    {
        int collumns, rows;
        int [,]mass;
        public int Collumns
        {
            get { return collumns; }
            set
            {if(value>0)
                collumns=value;
            }
        }
        public int Rows
        {
            get { return rows; }
            set
            {
                if (value > 0)
                    rows = value;
            }
        }
        public Matrix(int numberOfRows, int numberOfCollumns)
        {
            Rows = numberOfRows;
            Collumns = numberOfCollumns;
            mass = new int[Rows,Collumns];
         }
        public int this[int i, int j]
        {
            get { return mass[i, j]; }
            set 
            {
                if (i > 0 && j > 0)
                    mass[i, j] = value;
            }
        }
 
        
        public void Rand()
        {   
            Random r = new Random();
            for (int i = 0; i < Rows; i++)
                for (int j = 0; j < Collumns; j++)
                    mass[i, j] = r.Next(20);
        }
 
        public void Show()
        {
            for(int i=0;i<Rows;i++)
                {
                for (int j = 0; j < Collumns; j++)
                
                    Console.Write("{0,3}",mass[i, j]);
                Console.WriteLine();
                }
            Console.WriteLine();
            Console.ReadKey();
        }
        public static Matrix operator +(Matrix one, Matrix two)
        {
            Matrix rez= new Matrix(one.Rows, one.Collumns);
 
            for (int i = 0; i < one.Rows; i++)
                for (int j = 0; j < one.Rows; j++)
                    rez[i, j] = one[i, j] + two[i, j];
            return rez;
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.07.2012, 14:44
Ответы с готовыми решениями:

Перегрузка оператора ++
Есть класс ThreeD и метод перегрузки ++: public static ThreeD operator ++(ThreeD op) { ...

Перегрузка оператора -
Доброго времени суток! Задание: создать класс для работы с одномерным массивом вещественных чисел....

Перегрузка оператора +
Всем доброго времени суток :) --------------------------------------- Вот у меня есть небольшая...

Перегрузка оператора +
Всем добрый день, только начал изучать C# и столкнулся с такой проблемой. Пишу программу...

Перегрузка оператора <<
Здравствуйте, форумчане. Нужно в классе перегрузить оператор &lt;&lt;. Так не получается. В чем...

4
543 / 544 / 181
Регистрация: 16.03.2012
Сообщений: 1,160
Записей в блоге: 2
25.07.2012, 15:32 2
Исправьте на вот это:
C#
1
2
3
4
5
public int this[int i, int j]
{
   get { return mass[i, j]; }
   set { mass[i, j] = value; }
}
Либо так с проверкой условия:
C#
1
2
3
4
5
set
{
    if (i >= 0 && j >= 0)
       mass[i, j] = value;
}
И исправить: в операторе сложения, во втором for-е исправить условие на
C#
1
for (int j = 0; j < one.Collumns; j++)
1
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 3
25.07.2012, 15:34  [ТС] 3
Огромное спасибо. Тупанул с проверкой, конечно.
0
Эксперт .NET
17791 / 12942 / 3381
Регистрация: 17.09.2011
Сообщений: 21,219
25.07.2012, 17:04 4
В операторе бы проверочку добавить на равенство строк/столбцов.
0
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 3
26.07.2012, 13:21  [ТС] 5
Это код не окончательный, все проверочки сделаю, спасибо большое за советы.
0
26.07.2012, 13:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.07.2012, 13:21
Помогаю со студенческими работами здесь

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

Перегрузка оператора %
Здравствуйте! Уже задавала похожий вопрос. Как переопределить оператор %, для нахождения процента...

Перегрузка оператора
public Set operator &lt; (Set ob1, Set ob2) { if(ob1.len &gt; ob2.len) return false; ...

Перегрузка оператора ==
Вот код:public static bool operator ==(Tree LeftTree, Tree RightTree) { if (LeftTree== null...

Перегрузка оператора
Здравствуйте! Есть класс Fraction(дробь), хочу перегрузить оператор + для массива таких дробей......

Перегрузка оператора
Здравствуйте. У меня проблема, не могу сделать перегрузку оператора &quot;!&quot;, надо подсчитать факториал...


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

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