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

Класс "вещественная матрица"

15.05.2011, 19:26. Показов 8822. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят, помогите пожалуйста с задачей.. может есть у кого?

Описать класс, реализующий тип данных «вещественная матрица» и работу с ними. Класс должен реализовывать следующие операции над матрицами:
*методы, реализующие проверку типа матрицы (квадратная, диагональная, ну¬левая, единичная, симметричная, верхняя треугольная, нижняя треугольная);
*операции сравнения на равенство/неравенство;
*доступ к элементу по индексам.
Написать программу, демонстрирующую все разработанные элементы класса
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2011, 19:26
Ответы с готовыми решениями:

Описать класс, реализующий тип данных «вещественная матрица»
Описать класс, реализующий тип данных «вещественная матрица». Класс должен реализовывать следующие...

Описать класс реализующий тип данных «вещественная матрица»
Описать класс, реализующий тип данных «вещественная матрица» и работу с ними. Класс должен...

Описать класс, реализующий тип данных «вещественная матрица» и работу с ними
Ребята помогите пожалуйста) Описать класс, реализующий тип данных «вещественная матрица» и работу...

Описать класс, реализующий тип данных «вещественная матрица» и работу с ними
Описать класс, реализующий тип данных «вещественная матрица» и работу с ними. Класс должен...

10
185 / 188 / 17
Регистрация: 26.11.2010
Сообщений: 511
15.05.2011, 19:32 2
Свои наработки есть?
0
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 5
15.05.2011, 19:56  [ТС] 3
нет, в c# я полный ноль
0
гроза ленивых студентов
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
15.05.2011, 20:01 4
Цитата Сообщение от waitisova Посмотреть сообщение
нет, в c# я полный ноль
представь, что у тебя машина сломалась, а ты в них - полный ноль. а ездить надо...я думаю, ты пойдешь по одному из двух путей:
- либо найдешь какого-нить друга/знакомого, который починит тебе ее
- либо поедешь в сервис центр - чинить за деньги

здесь - то же самое...мы можем помочь, но с чего вдруг должны решать за тебя?
проси модераторов перенести тему в раздел фриланса - договоришься о цене и тебе решат...
0
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 5
15.05.2011, 20:50  [ТС] 5
ну может есть у кого уже решенная..
0
22 / 22 / 22
Регистрация: 15.05.2011
Сообщений: 69
15.05.2011, 22:30 6
я попробую написать.. но я начинающий) может получиться..

Добавлено через 29 минут
вот, все чем могу пока помочь)

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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
class main
{
    static void Main(string[] args)
    {
        matrix m1 = new matrix(5,5);
        matrix m2 = new matrix(5,5);
        m1.create();
        m2.create();
 
        Console.WriteLine("m1=");
        m1.show();
        Console.WriteLine("m2=");
        m2.show();
 
        Console.WriteLine("Матрицы равны "+m1.equals(m2));
        Console.WriteLine("Матрица квадратная " +m1.quad());
        Console.WriteLine("Матрица нулевая " + m1.nulle());
        Console.WriteLine("Матрица единичная " + m1.frs());
        Console.WriteLine("Матрица диагональная " + m1.diagon());
        Console.WriteLine("Матрица [1,3] = {0}", m1.Matrix[0,2]);
        Console.WriteLine("Матрица [2,2] = {0}", m1.Matrix[1,1]);
        Console.ReadKey();
 
    }
}
 
class matrix
{
    public double[,] Matrix = new Double[10,10];
    int lengthx, lengthy;
    static Random r = new Random();
 
    public bool diagon()
    {
        int count = 0; ;
        for (int i = 0; i < lengthx; i++)
        {
            for (int j = 0; j < lengthx; j++)
            {
 
                if (i == j)
                {
                    count++;
                }
 
                if (Matrix[i, j] != 0 && i != j)
                {
                    return false;
                }
 
            }
        }
 
        if (count == lengthx)
            return true;
        return false;
 
    
    }
    
    public bool frs()
    {
        int count = 0; ;
        for (int i = 0; i < lengthx; i++)
        {
            for (int j = 0; j < lengthx; j++)
            {
 
                if (Matrix[i, j] == 1 && i==j)
                {
                    count++;
                }
 
                if (Matrix[i, j] == 1 && i != j)
                {
                    return false;
                }
 
            }
        }
 
        if (count == lengthx)
            return true;
        return false;
 
    }
 
 
    public bool nulle()
    {
        int count = 0;
 
        for (int i = 0; i < lengthx; i++)
        {
            for (int j = 0; j < lengthx; j++)
            {
 
                if (Matrix[i,j]==0)
                {
                    count++;
                }
 
            }
        }
 
        if (count == lengthx * lengthy)
        {
            return true;
        }
        return false;
    }
 
    public void create()
    {
        for (int i = 0; i < lengthx; i++)
        {
            for (int j = 0; j < lengthx; j++)
            {
                Matrix[i, j] = Math.Round( r.Next(0, 250)/3.3 ,2);
            }
        }
 
 
    }
 
    public bool quad()
    {
        if (lengthx == lengthy)
        {
            return true;
        }
        return false;
 
    }
 
    public void show()
    {
        for (int i = 0; i < lengthx; i++)
        {
            for (int j = 0; j < lengthx; j++)
            {
                
                Console.Write("\t"+Matrix[i, j]);
 
            }
            Console.WriteLine();
        }
    }
 
    public bool equals(matrix a)
    {
        int count = 0;
        for (int i = 0; i < lengthx; i++)
        {
            for (int j = 0; j < lengthx; j++)
            {
 
                if (a.Matrix[i, j] == Matrix[i, j])
                {
                    count++;
                }
 
            }
            Console.WriteLine();
        }
 
        if (count == lengthx * lengthy)
        {
            return true;
        }
        return false;
    }
 
    public matrix(int lengthx,int lengthy)
    {
        this.lengthx = lengthx;
        this.lengthy = lengthy;
    }
}
0
Killster
15.05.2011, 22:32
  #7

Не по теме:

о Господи. Жестоко так помогать по-моему

1
22 / 22 / 22
Регистрация: 15.05.2011
Сообщений: 69
15.05.2011, 23:01 8
Killster, я так чисто сам для опыта.


C#
1
2
public double[,] Matrix = new Double[10,10];
int lengthx, lengthy;
вот так лучше)
C#
1
2
public double[,] Matrix = new Double[lengthx,lengthy];
int lengthx, lengthy;
0
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
15.05.2011, 23:01 9
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
using System;
using System.Collections.Generic;
 
/// <summary>
/// Вещественная матрица
/// </summary>
class Matrix
{
    /// <summary>
    /// Количество строк
    /// </summary>
    uint n;
    /// <summary>
    /// Количество столбцов
    /// </summary>
    uint m;
    /// <summary>
    /// Матрица
    /// </summary>
    double[,] array;
    /// <summary>
    /// Конструктор
    /// </summary>
    /// <param name="n">Количество строк в матрице</param>
    /// <param name="m">Количество столбцов в матрице</param>
    public Matrix(uint n, uint m)
    {
        this.n = n;
        this.m = m;
        Random random = new Random();
        array = new double[n, m];
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                array[i, j] = random.NextDouble();
    }
    /// <summary>
    /// Свойство, показывающее является ли матрица квадратной.
    /// </summary>
    public bool IsSquare
    {
        get
        {
            if (n == m)
                return true;
            return false;
        }
    }
    /// <summary>
    /// Свойство, показывающее является ли матрица единичной.
    /// </summary>
    public bool IsIdentity
    {
        get
        {
            if (n != m)
                return false;
            for (int i = 0; i < n; i++)
                if (array[i, i] != 1.0)
                    return false;
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++)
                    if (i != j)
                    {
                        if (array[i, j] != 0.0)
                            return false;
                    }
                    else
                        continue;
            return true;
        }
    }
    /// <summary>
    /// Свойство, показывающее является ли матрица нулевой.
    /// </summary>
    public bool IsZero
    {
        get
        {
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++)
                    if (array[i, j] != 0.0)
                        return false;
            return true;
        }
    }
    /// <summary>
    /// Свойство, показывающее является ли матрица диагональной.
    /// </summary>
    public bool IsDiagonalic
    {
        get
        {
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++)
                    if (i != j)
                    {
                        if (array[i, j] != 0.0)
                            return false;
                    }
                    else
                        continue;
            return true;
        }
    }
    /// <summary>
    /// Свойство, показывающее является ли матрица симметричной.
    /// </summary>
    public bool IsSimmetric
    {
        get
        {
            if (n != m)
                return false;
            if (this.IsDiagonalic || this.IsIdentity || this.IsZero)
                return true;
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++)
                    if (i - j < 0)
                        if (array[i, j] != array[j, i])
                            return false;
            return true;
        }
    }
    public double this[int i, int j]
    {
        get
        {
            return array[i, j];
        }
        set
        {
            array[i, j] = value;
        }
    }
    /// <summary>
    /// Метод, создающий нулевую матрицу.
    /// </summary>
    public void MakeZero()
    {
        if (!this.IsSquare)
            throw new Exception("Матрица должна быть квадратной.");
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                array[i, j] = 0.0;
    }
    /// <summary>
    /// Метод, создающий единичную матрицу.
    /// </summary>
    public void MakeIdentity()
    {
        if (!this.IsSquare)
            throw new Exception("Матрица должна быть квадратной.");
        MakeZero();
        for (int i = 0; i < n; i++)
            array[i, i] = 1.0;
    }
    /// <summary>
    /// Вывод матрицы на экран
    /// </summary>
    /// <param name="spliter">Разделитель между элементами массива</param>
    /// <param name="d">Количество символов после запятой.</param>
    public void ShowMatrix(string spliter, uint d)
    {
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
                Console.Write(array[i, j].ToString("F" + d.ToString()) + spliter);
            Console.WriteLine();
        }
    }
    /// <summary>
    /// Вывод матрицы на экран.
    /// </summary>
    public void ShowMatrix()
    {
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
                Console.Write(array[i, j].ToString("F2") + " ");
            Console.WriteLine();
        }
    }
    /// <summary>
    /// Метод создающий диагональную матрицу.
    /// </summary>
    public void MakeDiagonalic()
    {
        if (!this.IsSquare)
            throw new Exception("Матрица должна быть квадратной.");
        MakeZero();
        Random random = new Random();
        for (int i = 0; i < n; i++)
            array[i, i] = random.NextDouble();
    }
    /// <summary>
    /// Метод создающий симметричную матрицу.
    /// </summary>
    public void MakeSimmetric()
    {
        if (!this.IsSquare)
            throw new Exception("Матрица должна быть квадратной.");
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                if (i - j < 0)
                    array[i, j] = array[j, i];
    }
    /// <summary>
    /// Метод, перезаполняющий исходную матрицу.
    /// </summary>
    public void MakeRandom()
    {
        Random random = new Random();
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                array[i, j] = random.NextDouble();
    }
    /// <summary>
    /// Возвращает колечество строк матрицы
    /// </summary>
    public uint RowCount
    {
        get
        {
            return n;
        }
    }
    /// <summary>
    /// Возвращает количество столбцов матрицы
    /// </summary>
    public uint ColumnCount
    {
        get
        {
            return m;
        }
    }
    public static bool operator !=(Matrix m1, Matrix m2)
    {
        if (m1.RowCount != m2.RowCount)
            return true;
        if (m1.ColumnCount != m2.ColumnCount)
            return true;
        for (int i = 0; i < m1.RowCount; i++)
            for (int j = 0; j < m2.ColumnCount; j++)
                if (m1[i, j] != m2[i, j])
                    return true;
        return false;
    }
    public static bool operator ==(Matrix m1, Matrix m2)
    {
        if (m1.RowCount != m2.RowCount)
            return false;
        if (m1.ColumnCount != m2.ColumnCount)
            return false;
        for (int i = 0; i < m1.RowCount; i++)
            for (int j = 0; j < m2.ColumnCount; j++)
                if (m1[i, j] != m2[i, j])
                    return false;
        return true;
    }
    /// <summary>
    /// Изменение размеров матрицы.
    /// </summary>
    /// <param name="n">Количество строк.</param>
    /// <param name="m">Количество столбцов.</param>
    public void Resize(uint n, uint m)
    {
        this.n = n;
        this.m = m;
        array = new double[n, m];
        MakeRandom();
    }
    /// <summary>
    /// Получение двумерного массива
    /// </summary>
    /// <returns></returns>
    public double[,] ToArray()
    {
        double[,] buf = new double[n, m];
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                buf[i, j] = array[i, j];
        return buf;
    }
    /// <summary>
    /// Получение одномерного массива.
    /// </summary>
    /// <returns></returns>
    public double[] ToArrayOne()
    {
        double[] buf = new double[n * m];
        int index = 0;
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
            {
                buf[index] = array[i, j];
                index++;
            }
        return buf;
    }
}
 
class program
{
    public static void Main()
    {
        Matrix matrix = new Matrix(5, 5);
        matrix.ShowMatrix(" ", 2);
        matrix.MakeZero();
        Console.WriteLine(matrix.IsZero);
        matrix.MakeIdentity();
        matrix.ShowMatrix(" ", 2);
        Console.WriteLine(matrix.IsIdentity);
        matrix.MakeDiagonalic();
        matrix.ShowMatrix(" ", 2);
        Console.WriteLine(matrix.IsDiagonalic);
        matrix.MakeRandom();
        matrix.MakeSimmetric();
        Console.WriteLine(matrix.IsSimmetric);
        matrix.ShowMatrix();
        Matrix m2 = new Matrix(5, 5);
        if (matrix == m2)
            Console.WriteLine("Матрицы равны");
        else
            Console.WriteLine("Матрицы не равны");
        m2 = matrix;
        if (matrix == m2)
            Console.WriteLine("Матрицы равны");
        else
            Console.WriteLine("Матрицы не равны");
        Console.WriteLine(matrix.ColumnCount);
        Console.WriteLine(matrix.RowCount);
        matrix.Resize(6, 4);
        Console.WriteLine(matrix.IsSquare);
        matrix.ToArray();
        matrix.ToArrayOne();
        Console.ReadKey(true);
    }
}
0
185 / 188 / 17
Регистрация: 26.11.2010
Сообщений: 511
15.05.2011, 23:05 10
Цитата Сообщение от Петррр Посмотреть сообщение
...

Не по теме:

А вот так - ещё более жестоко. Человек был почти готов начать делать что-то сам

0
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
15.05.2011, 23:21 11
Кому не лень протестируйте все. И если будут пожелания добавлю что нить еще.
0
15.05.2011, 23:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2011, 23:21
Помогаю со студенческими работами здесь

Описать класс, реализующий тип данных «вещественная матрица» и работу с ними
Помогите пожалуйста, сделать лабу :cry: Лабораторная работа 8. Классы и операции Каждый...

Описать класс, реализующий тип данных ≪вещественная матрица≫ и работу с ними
Описать класс, реализующий тип данных ≪вещественная матрица≫ и работу с ними. Класс должен...

Описать класс, реализующий тип данных "вещественная матрица"
Описать класс, реализующий тип данных «вещественная матрица». Класс должен реализовывать...

Описать класс, реализующий тип "Вещественная матрица"
Здравствуйте! При написании программы у меня возникли такие проблемы: 1. Если ввести не квадратную...

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

Описать класс, реализующий тип данных "вещественная матрица" и работу с ними
Друзья, помогите пожалуйста! Задание звучит так: Описать класс, реализующий тип данных...

Описать класс, реализующий тип данных "Вещественная матрица" и работу с ним
Помогите написать программу. Описать класс, реализующий тип данных «вещественная матрица» и работу...


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

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