![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Natalka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 7.12.2006 Где: Днепродзержинск Репутация: нет Всего: нет |
что-то я запуталась немного,а где ошибка,кто знает?
Matrix &operator +( const Matrix &R) { Matrix **T; T=new Matrix*[m_width]; for(unsigned i=0;i<m_width;i++) { T[i]=new Matrix[m_height]; for(unsigned j=0;j<m_height;j++) { T[i][j]=m_value[i][j]+R.m_value[i][j]; } } return T[m_width][m_height];??? } |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Во-первых интересно было бы узнать какая ошибка
Во-вторых в приведенно коде не видно объявления переменных m_width и m_height |
|||
|
||||
| Natalka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 7.12.2006 Где: Днепродзержинск Репутация: нет Всего: нет |
Не могу почему-то сложить матрицы друг с другом, m_width и m_height равны значениям,которые я ввожу сама в main(),это предусмотрено в конструкторе:
Matrix A(3,4),где 3-это m_width ,а 4-m_height |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
А компилится без проблем?
Возвращаемое значение заявлено как ссылка, а возвращается указатель. Какая конкретно ошибка? Неправильно складывает? |
|||
|
||||
| Natalka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 7.12.2006 Где: Днепродзержинск Репутация: нет Всего: нет |
void main()
{ Matrix A(3,3); Matrix B(3,3); Matrix C(3,3); C=A+B;вот сдесь и ошибка - вообще не работает |
|||
|
||||
| TIGERоX |
|
|||
|
начинающий... ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 7.9.2005 Репутация: нет Всего: 1 |
return T[m_width-1][m_height-1]
Это сообщение отредактировал(а) TIGERоX - 16.12.2006, 22:54 |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Не работает или не компилируется?
|
|||
|
||||
| Natalka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 7.12.2006 Где: Днепродзержинск Репутация: нет Всего: нет |
компилируется,пока не ввожу в
main() { C=A+B; вот это |
|||
|
||||
| Rockie |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 13 Всего: 31 |
Natalka, покажи весь код и скажи, что этот перегружаемый оператор должен делать
-------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
| Natalka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 7.12.2006 Где: Днепродзержинск Репутация: нет Всего: нет |
#include "stdafx.h"
#include <ctime> using namespace std; class Matrix { int ** m_value; unsigned m_width,m_height; public: Matrix( unsigned width = 0, unsigned height = 0 ) : m_width(width), m_height(height) { m_value = new int*[m_width]; for ( unsigned i = 0; i < m_width; ++i ) { m_value[i] = new int[m_height]; for ( unsigned j = 0; j< m_height; ++j ) m_value[i][k]=0; } } void Get() { for ( unsigned i = 0; i < m_width; ++i ) { for ( unsigned k = 0; k < m_height; ++k ) { m_value[i][k]=rand()%10+1; cout<<m_value[i][k]<<" "; }cout<<endl; } } Matrix &operator +( const Matrix &R) { Matrix **T; T=new Matrix*[m_width]; for(unsigned i=0;i<m_width;i++) { T[i]=new Matrix[m_height]; for(unsigned j=0;j<m_height;j++) { T[i][j]=m_value[i][j]+R.m_value[i][j]; } } return T[m_width][m_height]; } ~Matrix() { for ( unsigned i = 0; i < m_width; i++ ) delete [] m_value[i]; delete [] m_value; } }; void main() { //srand(time(0)); Matrix A(3,3); Matrix B(3,3); Matrix C(3,3); C=A+B; A.Get(); cout<<endl; B.Get(); cout<<endl; C.Get(); } Я просто должна сложить две матрицы друг с другом |
|||
|
||||
| Rockie |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 13 Всего: 31 |
Natalka, и присвоить результат третьей =) Равно тоже надо перегружать -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
А зачем столько объектов типа Matrix?
|
|||
|
||||
| Natalka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 7.12.2006 Где: Днепродзержинск Репутация: нет Всего: нет |
#include "stdafx.h"
#include <ctime> using namespace std; class Matrix { int ** m_value; unsigned m_width,m_height; public: Matrix( unsigned width = 0, unsigned height = 0 ) : m_width(width), m_height(height) { m_value = new int*[m_width]; for ( unsigned i = 0; i < m_width; ++i ) { m_value[i] = new int[m_height]; for ( unsigned j = 0; j< m_height; ++j ) m_value[i][k]=0; } } void Get() { for ( unsigned i = 0; i < m_width; ++i ) { for ( unsigned k = 0; k < m_height; ++k ) { m_value[i][k]=rand()%10+1; cout<<m_value[i][k]<<" "; }cout<<endl; } } Matrix &operator +( const Matrix &R) { Matrix **T; T=new Matrix*[m_width]; for(unsigned i=0;i<m_width;i++) { T[i]=new Matrix[m_height]; for(unsigned j=0;j<m_height;j++) { T[i][j]=m_value[i][j]+R.m_value[i][j]; } } return T[m_width][m_height]; } Matrix& operator=( const Matrix &matrix ) { if ( this != &matrix ) { for ( unsigned i = 0; i < m_width; i++ ) delete [] m_value[i]; delete [] m_value; m_width = matrix.m_width; m_height = matrix.m_height; m_value = new int*[m_width]; for ( unsigned i = 0; i < m_width; ++i ) { m_value[i] = new int[m_height]; for ( unsigned k = 0; k < m_height; ++k ) m_value[i][k] = matrix.m_value[i][k]; } } return *this; } ~Matrix() { for ( unsigned i = 0; i < m_width; i++ ) delete [] m_value[i]; delete [] m_value; } }; void main() { //srand(time(0)); Matrix A(3,3); Matrix B(3,3); Matrix C(3,3); C=A+B; ------------------------------------//а это разве не третья, равно перегрузила A.Get(); cout<<endl; B.Get(); cout<<endl; C.Get(); } |
|||
|
||||
| apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 10 Всего: 23 |
Зачем такой большой код
-------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
| Natalka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 7.12.2006 Где: Днепродзержинск Репутация: нет Всего: нет |
Cпасибо,конечно,но мне нужен код с перегруженным оператором и с динамическим массивом
|
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |