Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/34: Рейтинг темы: голосов - 34, средняя оценка - 4.59
3 / 3 / 2
Регистрация: 22.10.2014
Сообщений: 83

Создание конструкторов для класса "Матрица"

22.10.2014, 18:02. Показов 6609. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане) Вообщем суть дела вот в чём:

Разработать класс для представления объекта матрица, состоящая из элементов типа double. Определить конструктор с двумя параметрами целого типа – размерность матрицы, который можно использовать как конструктор умолчания. Определить конструктор, который создаёт новую матрицу таким образом, что все её элементы больше элементов другой матрицы на заданное число, и который можно использовать как конструктор копирования. Определить деструктор. Определить преобразования из переменной типа double в матрицу – заполнение матрицы и из матрицы в переменную типа double – среднее арифметическое элементов матрицы.

"Определить конструктор с двумя параметрами целого типа – размерность матрицы, который можно использовать как конструктор умолчания." - это сделано

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class matrix
    {
       public double[,] mat1;       public double[,] mat2;
       public int n;        public int m;
       public double k = 6; //заданное число
       
        public  matrix(int n, int m)
        {
            
            Random r = new Random();
            double [,] mat1 = new double[n,m];
            for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
            mat1[i, j] = r.Next(1, 10);
        }
"Определить конструктор, который создаёт новую матрицу таким образом, что все её элементы больше элементов другой матрицы на заданное число, и который можно использовать как конструктор копирования." - а как сделать это, т.е. второй конструктор?

Благодарю за внимание!)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.10.2014, 18:02
Ответы с готовыми решениями:

Создание конструкторов класса
Напишите программу, имеющую 2 класса - основной и ваш собственный класс CarClass. Класс CarClass должен иметь конструкторы в соответствии с...

Помогите!!! Осуществить перегрузку конструкторов для класса
ConsoleApplication Реальзовать класс Осуществить перегрузку конструкторов для класса Особым методом реализовать метод run(),...

Конструктор класса. Перегрузка конструкторов класса
Подскажите пожалуйста.. как это сделать? Вот задание: Модифицировать данную прогу.. Модифицирование сводится к следующему:...

7
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
22.10.2014, 22:29
Здравствуйте.
Код на C#, а задание сильно пахнет плюсами:
Цитата Сообщение от arko Посмотреть сообщение
Определить деструктор
Цитата Сообщение от arko Посмотреть сообщение
использовать как конструктор копирования
Если придерживаться вашего кода, то задание
Цитата Сообщение от arko Посмотреть сообщение
Определить конструктор, который создаёт новую матрицу таким образом, что все её элементы больше элементов другой матрицы на заданное число, и который можно использовать как конструктор копирования.
выглядит примерно так
C#
1
2
3
4
5
6
7
8
9
10
public class Matrix
{
    public double[,] mat1;
    
    public Matrix(Matrix another, int increase) {
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                mat1 = another[i, j] + increase;
    }
}
Но я бы вам посоветовал изменить строение класса - m и n, например, хранить необязательно - их можно всегда получить из внутренней матрицы
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Matrix
{
    private double[,] data;
 
    public int RowsCount {
        get {
            return data.GetLength(0);
        }
    }
    
    public int ColumnsCount {
        get {
            return data.GetLength(1);
        }
    }
}
P.S. Что вы будете писать в деструкторе и зачем он здесь нужен - я не представляю.
1
3 / 3 / 2
Регистрация: 22.10.2014
Сообщений: 83
22.10.2014, 22:50  [ТС]
tezaurismosis, Выдаёт вот такую ошибку)
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
22.10.2014, 23:08
arko, да, нужен либо индексатор, либо простой метод для получения значений, либо обращаться через mat1.
Писал на коленке, поэтому ошибся, причём дважды.
1) Простейший
Кликните здесь для просмотра всего текста
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
using System;
 
namespace ConsoleApplication
{
    public class Matrix
    {
        public double[,] mat1;
 
        public Matrix(int n, int m) {
            Random r = new Random();
            mat1 = new double[n, m];
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++)
                    mat1[i, j] = r.Next(1, 10);
        }
 
        public Matrix(Matrix another, int increase) {
            mat1 = new double[another.mat1.GetLength(0), another.mat1.GetLength(1)];
            for (int i = 0; i < mat1.GetLength(0); i++)
                for (int j = 0; j < mat1.GetLength(1); j++)
                    mat1[i, j] = another.mat1[i, j] + increase;
        }
    }
 
    public class Program
    {
        static void Main(string[] args) {
            Matrix m1 = new Matrix(4, 6);
            Matrix m2 = new Matrix(m1, 5);
        }
    }
}

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
using System;
 
namespace ConsoleApplication
{
    public class Matrix
    {
        private double[,] data;
 
        public int RowsCount {
            get {
                return data.GetLength(0);
            }
        }
 
        public int ColumnsCount {
            get {
                return data.GetLength(1);
            }
        }
 
        public Matrix(int n, int m) {
            Random r = new Random();
            data = new double[n, m];
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++)
                    data[i, j] = r.Next(1, 10);
        }
 
        public Matrix(Matrix another, int increase) {
            data = new double[another.RowsCount, another.ColumnsCount];
            for (int i = 0; i < RowsCount; i++)
                for (int j = 0; j < ColumnsCount; j++)
                    data[i, j] = another.GetItem(i, j) + increase;
        }
 
        public double GetItem(int rowIndex, int columnIndex) {
            return data[rowIndex, columnIndex];
        }
    }
 
    public class Program
    {
        static void Main(string[] args) {
            Matrix m1 = new Matrix(4, 6);
            Matrix m2 = new Matrix(m1, 5);
        }
    }
}

3) Самый удобный - с индексатором
Кликните здесь для просмотра всего текста
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
using System;
 
namespace ConsoleApplication
{
    public class Matrix
    {
        private double[,] data;
 
        public int RowsCount {
            get {
                return data.GetLength(0);
            }
        }
 
        public int ColumnsCount {
            get {
                return data.GetLength(1);
            }
        }
 
        public Matrix(int n, int m) {
            Random r = new Random();
            data = new double[n, m];
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++)
                    data[i, j] = r.Next(1, 10);
        }
 
        public Matrix(Matrix another, int increase) {
            data = new double[another.RowsCount, another.ColumnsCount];
            for (int i = 0; i < RowsCount; i++)
                for (int j = 0; j < ColumnsCount; j++)
                    data[i, j] = another[i, j] + increase;
        }
 
        // индексатор
        public double this[int rowIndex, int columnIndex] {
            get {
                return data[rowIndex, columnIndex];
            }
        }
    }
 
    public class Program
    {
        static void Main(string[] args) {
            Matrix m1 = new Matrix(4, 6);
            Matrix m2 = new Matrix(m1, 5);
        }
    }
}
1
3 / 3 / 2
Регистрация: 22.10.2014
Сообщений: 83
23.10.2014, 21:56  [ТС]
tezaurismosis, а что происходит тут?

C#
1
2
3
 static void Main(string[] args) {
            Matrix m1 = new Matrix(4, 6);
            Matrix m2 = new Matrix(m1, 5);
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
23.10.2014, 22:09
arko, сначала вызывается конструктор Matrix(int n, int m)
Во второй строке вызывается Matrix(Matrix another, int increase), он создаёт матрицу m2 на основе m1.
0
3 / 3 / 2
Регистрация: 22.10.2014
Сообщений: 83
24.10.2014, 00:01  [ТС]
tezaurismosis, я имел ввиду - почему в скобках именно эти цифры?
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
24.10.2014, 09:07
arko, там может быть любое целое положительное число, я выбрал эти числа ради теста. Какого-то скрытого значения они не имеют.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.10.2014, 09:07
Помогаю со студенческими работами здесь

Перегрузка конструкторов класса. Объявить и продемонстрировать использование 3-4 перегруженных конструкторов класса
Здравствуйте, дорогие друзья! Помогите пожалуйста справиться с заданием на тему конструкторов и перегрузку классов. Битые часы сижу с это...

Создание класса, конструкторов и деструкторов в С++
Класс товара Базовый класс (товар): Переменные: Название, производитель, цена. Конструкторы: по умолчанию, с параметрами и...

Разработка структуры класса. Создание методов и конструкторов
Помогите дополнить программу. Сделал программу которая в консоли телефонный справочник например: фамилия A, телефон 123-456-789, адрес B....

Перегрузка конструкторов (создание класса Matrix, перемножение матриц)
Помогите пожалуйста с умножением матриц Добавлено через 20 секунд #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include...

Реализация функций ввода/ вывода, создание конструкторов класса
Требуется создать класс String для работы со строками символов. Перегрузить операторы ‘=‘, ‘+=‘ так, чтобы производилось сложение строки и...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru