Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 25.06.2012
Сообщений: 4

Создать класс Матрица и производный от него

25.06.2012, 05:14. Показов 3115. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня возникла проблема в написании производного класса, на основе базового класса Матрица. Задание звучит так: Организовать производный класс, дополнительно содержащий функции нахождения произведения и сложения матриц.
Ведь производный класс должен содержать свойства базового(которые для сложения и произведения не нужны), если я не ошибаюсь. Поэтому я не могу понять как его организовать? У меня есть идея создать 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
#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <windows.h>
#include <math.h>
using namespace std;
 
class Matrix
{
private:
   int **array;
   int size;
   float det;
public:
   void set_Matrix();
   void show_Matrix();
   void show_TMatrix();
   float set_det();
   Matrix::Matrix(); //Конструктор по умолчанию
   Matrix::Matrix(int); //Конструктор с параметрами
   ~Matrix() {cout<< "Матрица уничтожена";}; //Диструктор
};
 
void Matrix::set_Matrix() 
{
srand((unsigned) time(NULL));
array = new int*[size];
for(int i=0; i<size; i++)
   array[i] = new int [size];
for(int i=0; i<size; i++)
   for(int j=0; j<size; j++)
      array[i][j]=rand()%30;  
}
 
float Matrix::set_det()
{
int l;
float sum11=1,sum12=0, sum21=1, sum22=0;
// находим детерминант
for(int i=0; i<size; i++)
   {
   sum11=1; l=2*size-1-i; sum21=1;
   for(int j=0; j<size; j++)
      {
      sum21*=array[j][l%size];
      l--;
      sum11*=array[j][(j+i)%(size)];
      }
   sum22+=sum21;
   sum12+=sum11;
   }
det=sum12-sum22;
return det;
}
 
void Matrix::show_Matrix()
{
cout<<"Исходная матрица:"<<endl;
for(int i=0; i<size; i++)
   {
   for(int j=0; j<size; j++)
      cout<<setw(4)<<array[i][j];
   cout<<endl;
   } 
set_det();
cout<<"Определитель равен:"<<det<<endl;            
}
 
void Matrix::show_TMatrix()
{
cout<<"Транспонированная матрица:"<<endl;
for(int j=0; j<size; j++)
   {
   for(int i=0; i<size; i++)
      cout<<setw(4)<<array[i][j];
   cout<<endl;
   }            
}
 
Matrix::Matrix()
{
size=3;
set_Matrix();
cout<<"Используется конструктор по умолчанию! Размер матрицы по умолчнию равен 3"<<endl;           
}
 
Matrix::Matrix(int a)
{
size=a;
set_Matrix();
cout<<"Используется конструктор с параметрами! Размер матрицы равен "<<size<<endl;           
}
 
 
int main()
{
 SetConsoleOutputCP(1251);
 SetConsoleCP(1251);
 Matrix A(3);
 A.show_Matrix();
 A.show_TMatrix();
 system("pause");
 return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.06.2012, 05:14
Ответы с готовыми решениями:

Создать базовый класс Points и производный от него Line
Создать базовый класс Points и производный от него Line. Создать динамический массив указателей на объекты класса Line и нарисовать их в...

Создать класс Man (человек), с полями: имя, возраст, пол и вес. Создать производный класс Student ...
Создать класс Man (человек), с полями: имя, возраст, пол и вес. Определить методы задания имени, возраста и веса. Создать производный класс...

Создать абстрактный базовый класс Тройка чисел с виртуальными методами увеличения на 1. Создать производный класс Время со своими функциями
Здравствуйте, пожалуйста помогите написать код к данной задаче, с таким условием: Создать абстрактный базовый класс Тройка чисел с...

2
 Аватар для Andrey.K
348 / 269 / 128
Регистрация: 14.11.2010
Сообщений: 482
25.06.2012, 08:00
Изучите такое понятие как наследование. Там ничего сложного и быстро сделается в вашей задаче.
0
387 / 214 / 102
Регистрация: 09.04.2012
Сообщений: 635
25.06.2012, 08:56
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
#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <windows.h>
#include <math.h>
#include <time.h>
 
using namespace std;
 
class Matrix
{
private:
   int **array;
   int size;
   float det;
public:
   void set_Matrix_element(int i1, int i2, int i3) { array[i1][i2] =i3; }
   int get_Matrix_element(int i1, int i2) { return array[i1][i2]; }
   int get_Matrix_size() { return size; }
   void set_Matrix();
   void show_Matrix();
   void show_TMatrix();
   float set_det();
   Matrix::Matrix(); //Конструктор по умолчанию
   Matrix::Matrix(int); //Конструктор с параметрами
   ~Matrix() {cout<< "Матрица уничтожена";}; //Диструктор
};
 
void Matrix::set_Matrix() 
{
srand((unsigned) time(NULL));
array = new int*[size];
for(int i=0; i<size; i++)
   array[i] = new int [size];
for(int i=0; i<size; i++)
   for(int j=0; j<size; j++)
      array[i][j]=rand()%30;  
}
 
float Matrix::set_det()
{
int l;
float sum11=1,sum12=0, sum21=1, sum22=0;
// находим детерминант
for(int i=0; i<size; i++)
   {
   sum11=1; l=2*size-1-i; sum21=1;
   for(int j=0; j<size; j++)
      {
      sum21*=array[j][l%size];
      l--;
      sum11*=array[j][(j+i)%(size)];
      }
   sum22+=sum21;
   sum12+=sum11;
   }
det=sum12-sum22;
return det;
}
 
void Matrix::show_Matrix()
{
cout<<"Исходная матрица:"<<endl;
for(int i=0; i<size; i++)
   {
   for(int j=0; j<size; j++)
      cout<<setw(4)<<array[i][j];
   cout<<endl;
   } 
set_det();
cout<<"Определитель равен:"<<det<<endl;            
}
 
void Matrix::show_TMatrix()
{
cout<<"Транспонированная матрица:"<<endl;
for(int j=0; j<size; j++)
   {
   for(int i=0; i<size; i++)
      cout<<setw(4)<<array[i][j];
   cout<<endl;
   }            
}
 
Matrix::Matrix()
{
size=3;
set_Matrix();
cout<<"Используется конструктор по умолчанию! Размер матрицы по умолчнию равен 3"<<endl;           
}
 
Matrix::Matrix(int a)
{
size=a;
set_Matrix();
cout<<"Используется конструктор с параметрами! Размер матрицы равен "<<size<<endl;           
}
 
 
 
 
class Matrix2 : public Matrix
{
public:
 Matrix2() { };
 void AddMatrix(Matrix* a, Matrix* b) 
 {
 int sz = a->get_Matrix_size();
 int i,j;
 for(i=0;i<sz;i++)
  for(j=0;j<sz;j++)
   set_Matrix_element ( i,  j,  a->get_Matrix_element(i,j) + b->get_Matrix_element(i,j) );
 };
 
 void MulMatrix(Matrix* a, Matrix* b) 
 {
 int sz = a->get_Matrix_size();
 int i,j, k,l;
 int p;
 for(i=0;i<sz;i++)
  for(j=0;j<sz;j++)
 {
   for (p = 0, k = 0; k<sz;k++)
   {
    p += a->get_Matrix_element(i,k) * b->get_Matrix_element(k, j);
   }
   set_Matrix_element ( i,  j,  p);
 }
 };
 
 ~Matrix2() { };
};
 
 
 
int main()
{
 SetConsoleOutputCP(1251);
 SetConsoleCP(1251);
 
Matrix B(3);
Matrix C(3);
for(int i = 0; i< B.get_Matrix_size(); i++)
for(int j = 0; j< B.get_Matrix_size(); j++)
B.set_Matrix_element(i, j, i+j);
B.show_Matrix();
 
for(int i = 0; i< B.get_Matrix_size(); i++)
for(int j = 0; j< B.get_Matrix_size(); j++)
C.set_Matrix_element(i, j, i+j);
C.show_Matrix();
 
 
 
Matrix2  t;
 
t.MulMatrix(&B, &C);
t.show_Matrix();
 
 system("pause");
 return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.06.2012, 08:56
Помогаю со студенческими работами здесь

Разработать производный от абстрактного класса Figure класс и класс, производный от производного
Разработать базовый абстрактный класс Figure с пустым виртуальным методом print для вывода в дальнейшем полной информации об объекте: ...

Создать класс Point и производный класс ColoredPoint (цветная точка)
Создайте класс Point (точка на плоскости), характеризующийся двумя координатами. Создайте производный класс ColoredPoint (цветная точка), в...

Создать базовый класс - Array и производный класс - Money для работы денежной суммы
ПОМОГИТЕ, ПОЖАЛУЙСТА, С ЗАДАЧЕЙ Создать базовый класс - Array и производный класс - Money для работы денежной суммы

Создать базовый класс Car (машина) и производный класс Lorry (грузовик): ООП ошибки
Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цилиндров, мощностью. Определить методы переназначения...

Создать базовый класс Triad и производный класс vector3D
Помогите пожалуйста с заданием. Часть кода(vector3D) сделал, вроде работает Нужно помочь с классом Triad. Вот полное задание: ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru