Форум программистов, компьютерный форум CyberForum.ru

Написать класс «матрица» - C++

Восстановить пароль Регистрация
 
 
Катя 89
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 9
10.07.2014, 17:51     Написать класс «матрица» #1
Добрый день я новичок помогите мне Написать класс «матрица». В классе реализовать следующие методы: конструкторы (по умолчанию, с
параметрами, копирования), деструктор, ввод с клавиатуры, поиск элемента по ключу,
вывод на экран (в виде методов класса и при помощи перегруженных операций
потокового ввода и вывода), перегрузить следующие операции: +, += (сложение матриц),
– (вычитание), = (присвоение), = = (сравнение по элементам), [] (взятие элемента с
заданным индексом).
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
10.07.2014, 17:57     Написать класс «матрица» #2
Катя, вопрос-то в чем?
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,538
Записей в блоге: 27
10.07.2014, 18:00     Написать класс «матрица» #3
Цитата Сообщение от Vourhey Посмотреть сообщение
Катя, вопрос-то в чем?

Не по теме:

Они используют ключевое слово - "новичок" или "не понимаю с++" и так далее. Это фразы со скрытым смыслом - "напишите мне, а то мне лень учиться".

Катя 89
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 9
10.07.2014, 18:40  [ТС]     Написать класс «матрица» #4
Программу написала, но запуталась не могу распутать.

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
class Matrix{Array *a;int m,n;
public:
Matrix(int m1,int n1,int t=0);
Array &operator [](int i)
{if(i<0 i>=m){cout<<exit(0);}
return a[i];
}
void Show(); ...
};
{
Matr = new long int*[m];
for (int z=0; z<m; z++)
Matr[z] = new long int[n];
}
private:
unsigned xsize, ysize;
double *Array;
int temporary;
public:
// constructors and destructor
Matrix(): m(), n() { Create(); }
Matrix(long int i): m(i), n(i) { Create(); }
Matrix(long int i, long int j): m(i), n(j) { Create(); }
~Matrix()
{
for (int z=0; z<m; z++)
delete[] Matr[z];
delete[] Matr;
}
// methods
Matrix & operator*(Matrix& M);
Matrix & operator()(unsigned n, unsigned v)
{
Array[n]=v;
}
};
Matrix::Matrix(unsigned y, unsigned x)
{
unsigned asize = x*y;
double v;
Array = new double[asize];
xsize = x;
ysize = y;
temporary = 0;
for(unsigned i = 0; i<asize; i++) {
cout<<"Enter "<< i+1 <<" elemet ";
cin>>v;
Array[i] = v;
}
{
if (i<m && j<n)
return Matr[i][j];
else
cout << "Error: 1";
}
void MultiplyBy(long int x)
{
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
Matr[i][j] *= x;
}
void Display()
{
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
cout.width(4);
cout << Matr[i][j];
}
cout << endl;
}
}
};
return Array[n-1];
}
Matrix & Matrix::operator*(Matrix& M)
{
if(ysize==M.xsize)
for(int i=0;i<ysize;i++)
for(int j=0;j<M.xsize;j++)
for(int k=0;k<ysize;k++)
M(i*j) += Array[i*k]*M(k*j);
else cout<<"Размерности матриц не верны"<<endl;
return M ;
}
Matrix::Matrix(unsigned y, unsigned x, double v)
{
temporary = 0;
Array[y*x] = v;
}
int main()
{
Matrix M();
for (int i=; i<; i++)
{
for (int j=0; j<5; j++)
M.Element(i, j) = i+j;
}
M.Display();
cout << "\n After multiply by 5\n" << endl;
M.MultiplyBy(5);
M.Display();
return 0;
}
 
[size="1"][color="grey"][I]Добавлено через 21 минуту[/I][/color][/size]
есть класс Array. Класс Matr-агрегированный класс.
class Matr
{Array *matr; int m, n;
public:
...
};
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
10.07.2014, 18:45     Написать класс «матрица» #5
Цитата Сообщение от Катя 89 Посмотреть сообщение
есть класс Array. Класс Matr-агрегированный класс.
Это ведь кто-то для тебя писал?
Цитата Сообщение от Катя 89 Посмотреть сообщение
есть класс Array.
Где же он есть, когда его нет
Катя 89
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 9
10.07.2014, 18:52  [ТС]     Написать класс «матрица» #6
А куда его добавить?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
10.07.2014, 18:55     Написать класс «матрица» #7
Еще не понятно, что за Matr, откуда он берется. Ты компилировала свой код? Он ведь не скомпилится.
Катя 89
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 9
10.07.2014, 18:58  [ТС]     Написать класс «матрица» #8
Запуталась окончательно, не могу найти выхода.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
10.07.2014, 19:06     Написать класс «матрица» #9
Цитата Сообщение от Катя 89 Посмотреть сообщение
Запуталась окончательно
Зачем было писать так много сразу?
Начните с:
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
class Matrix
{
private:
   double **Array;
   int m,n;
public:
Matrix(unsigned y, unsigned x) // Конструктор
{
     m=x;n=y;
     Array = new double*[n];
     for(unsigned i = 0; i<n; i++) 
              Array[i]=new double[m];
}
~Matrix() // деструктор
{
     for(unsigned i = 0; i<n; i++) 
              delete[] Array[i];
     delete[] Array;
}
int main()
{
    Matrix A(2,3);
    return 0;
}
Катя 89
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 9
10.07.2014, 19:07  [ТС]     Написать класс «матрица» #10
О спасибо, спасибо.
Supernatural
285 / 141 / 28
Регистрация: 22.11.2010
Сообщений: 1,439
10.07.2014, 19:08     Написать класс «матрица» #11
я предлагаю написать заново и с самого начала, с конструктора.
C++
1
2
3
4
constructor Matr::Matr() //по умолчанию
{
//действия для создания матрицы
}
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
10.07.2014, 19:08     Написать класс «матрица» #12
Начни писать с нуля, чтобы распутаться. Безо всяких Matr и Array.
Vourhey
10.07.2014, 19:09
  #13

Не по теме:

Цитата Сообщение от zss Посмотреть сообщение
Зачем было писать так много сразу?
Начните с:
Цитата Сообщение от Supernatural Посмотреть сообщение
я предлагаю написать заново и с самого начала, с конструктора.
Да мы все сговорились...

Supernatural
10.07.2014, 19:10
  #14

Не по теме:

Да мы все сговорились...
бывает..)))
ладно, доверю этого клиента более опытным программистам))))

ojgen
1 / 1 / 0
Регистрация: 29.06.2014
Сообщений: 11
11.07.2014, 03:41     Написать класс «матрица» #15
Раньше тоже делал это задание. но я, на твоем месте, выучил бы эту тему.
Вложения
Тип файла: rar matr.rar (2.7 Кб, 18 просмотров)
Катя 89
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 9
13.07.2014, 19:20  [ТС]     Написать класс «матрица» #16
Вот какую программу я написала, но все равно не работает. Помогите.

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
#include "matrix.h"
#include "array.h"
#include <iostream>
using std::cout; 
 using std::cin; 
#include <iomanip> 
using std::setw;   
#include <cstdlib>
class Matrix
public
 Massiv
Matrix::Matrix() 
{
size = 10; 
ptr = new Array [size]; 
 for (int ix = 0; ix < size; ix++) 
for (int jx = 0; jx < 10; jx++)
ptr[ix][jx] = 0;
}
Matrix::Matrix(int matrixSize, int arraySize) 
{
size = (matrixSize > 0 ? matrixSize : 10); 
ptr = new Array [size]; 
for (int ix = 0; ix < size; ix++) 
ptr[ix].setSize(arraySize > 0 ? arraySize : 10); 
for (int ix = 0; ix < size; ix++) 
for (int jx = 0; jx < ptr->getSize(); jx++)
ptr[ix][jx] = 0;
}
Matrix::Matrix(  Matrix &matrixToCopy ) 
:size(matrixToCopy.size)              
{
ptr = new Array [size]; 
for (int ix = 0; ix < size; ix++) 
ptr[ix].setSize(size); 
for (int ix = 0; ix < size; ix++)
for (int jx = 0; jx < ptr->getSize(); jx++)
ptr[ix][jx] = matrixToCopy[ix][jx];
 matrixToCopy
}
Matrix::~Matrix() 
{
Array *Matrix::getPtr() const
{
return ptr;
}
ostream &operator<< (ostream &output, const Matrix &obj)
{
for (int ix = 0; ix < obj.size; ix++)
{
for (int jx = 0; jx < obj.ptr->getSize(); jx++)
{
output << setw(5) 
<< obj.ptr[ix][jx];
}
cout << std::endl;
}
output << std::endl; 
return output;
 }
for (int ix = 0; ix < obj.size; ix++)
for (int jx = 0; jx < obj.ptr->getSize(); jx++)
input >> obj.ptr[ix][jx]; 
return input;  }
Array &Matrix::operator[] (int subscript)
{
if(subscript < 0 || subscript >= size)
{
void Matrix::setMatrix() 
{
for (int ix = 0; ix < size; ix++)
for (int jx = 0; jx < ptr->getSize(); jx++)
cin >> ptr[ix][jx]; 
}
void Matrix::getMatrix() 
{
for (int ix = 0; ix < size; ix++)
{
for (int jx = 0; jx < ptr->getSize(); jx++)
cout << setw(5) << ptr[ix][jx]; 
cout << std::endl;
}
cout << std::endl; 
}
for (int ix = 0; ix < size; ix++)
for (int jx = 0; jx < ptr->getSize(); jx++)
}
Matrix Matrix::operator+ (const Matrix &right)
{
if (size != right.size || ptr->getSize() != right.getPtr()->getSize())
{
cout << 
exit(1); 
}
Sh@dow777
14.07.2014, 07:44
  #17

Не по теме:

Мне вот интересно, почему некоторые пишут что то типа

C++
1
using std::cout;
или
C++
1
using std::cin;
если можно написать одну строчку
C++
1
using namespace std;
и не париться?

Kukurudza
104 / 85 / 6
Регистрация: 29.08.2012
Сообщений: 539
14.07.2014, 07:58     Написать класс «матрица» #18
Sh@dow777, подключи еще одну толстую библиотеку, в которой есть вектор и лист и удачно откомпилируй.
Sh@dow777
14.07.2014, 07:59
  #19

Не по теме:

Или вообще не пишут

C++
1
using namespace std;
и пишут, где им надо, что то типа
C++
1
std::vector
C++
1
std::map
C++
1
std::cin
Ведь это
C++
1
std
можно в одной строчке убрать Если что, то это лично мое мнение.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2014, 08:03     Написать класс «матрица»
Еще ссылки по теме:

C++ Написать класс "матрица"
Класс Матрица C++

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

Или воспользуйтесь поиском по форуму:
Kukurudza
104 / 85 / 6
Регистрация: 29.08.2012
Сообщений: 539
14.07.2014, 08:03     Написать класс «матрица» #20
Sh@dow777, ну лобай теперь все в один неймспейс.
Yandex
Объявления
14.07.2014, 08:03     Написать класс «матрица»
Ответ Создать тему
Опции темы

Текущее время: 06:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru