Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2011, 16:33   #1
Lazy maximka
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 29
Печаль Динамический многомерный массив

Хочу реализовать класс матриц. Для этого мне необходимо создать и инициализировать многомерный динамический массив. Однако при запуске прога зависает. Вот код:
Код:
// Класс.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"

class matrix
{
public:
	matrix(int cap);
	void transpon();
	int det_matrix();
	void input(int capacity);
	void output(int capacity);
private:
	int **mass;
	int capacity,i,j;
};

matrix::matrix(int cap):capacity(cap)
{
	int**mass=new int*[capacity];
	for (i=0;i<capacity;i++)
		mass[i]=new int[capacity];
}

void matrix::input(int capacity)
{
	printf("enter  the initial matrix\n");
	for(i=0;i<capacity;i++)
		for(j=0;j<capacity;j++)
			scanf("%i",mass[i][j]);
}

void matrix::output(int capacity)
{
	printf("the recieved matrix");
	for(i=0;i<capacity;i++)
		for(j=0;j<capacity;j++)
		{
			printf("%3i",mass[i][j]);
			printf("\n");
		}
}

int _tmain(int argc, _TCHAR* argv[])
{
	int size;
	printf("enter dimension\n");
	scanf("%i",&size);
	matrix matrix1(size);
	matrix1.input(size);
	return 0;
}
Помогите плиз!
Lazy maximka вне форума Ответить с цитированием
Старый 24.04.2011, 17:16   #2
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Код:
int**mass=new int*[capacity];
Ты выделяешь память под локальную переменную, а не под член класса. Как результат, член класса остается неинициализированным.

Код:
mass=new int*[capacity];
- тебе нужно так.
mMAg вне форума Ответить с цитированием
Старый 24.04.2011, 17:51   #3
Lazy maximka
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 29
По умолчанию

Спасибо большое =)
Lazy maximka вне форума Ответить с цитированием
Старый 24.04.2011, 21:03   #4
Lazy maximka
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 29
По умолчанию

Эмм...а может еще кто подскажет как возвратить в функции многомерный массив?
Lazy maximka вне форума Ответить с цитированием
Старый 24.04.2011, 21:26   #5
Lazy maximka
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 29
По умолчанию

Просто вот еще проблемка, никак не могу понять как перегрузить хотя бы операцию сложения, вот что у меня получилось:
Код:
class matrix
{
public:
	matrix(int cap);
	matrix(int cap,int number);
	matrix(const matrix& matobject);
	int getcapacity() const {return capacity;}
	int **getmass() const {return mass;}
	void transpon();
	int det_matrix();
	void input(int capacity);
	void output(int capacity);
	~matrix();
private:
	int **mass;
	int capacity,i,j,x;
};


const matrix operator +(const matrix& amount1,const matrix& amount2)
{
	matrix copy(amount1.getcapacity());
	matrix one(amount1.getmass());
	matrix two(amount2.getmass());
	for (int i=0;i<copy.getcapacity();++i)
		for (int j=0;j<copy.getcapacity();++j)
			copy[i][j]=one[i][j]+two[i][j];
	return copy;
}
Lazy maximka вне форума Ответить с цитированием
Старый 24.04.2011, 21:40   #6
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Операции сложения, вычитания, умножения (насчет деления не скажу, не помню) перегружаются
Код:
myType operator+(const myType& myObj)
Применяя операцию, например a+b, myObj - это b, *this - это a.
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 25.04.2011, 00:05   #7
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

На первый взгляд все нормально вы перегрузили, просто перегрузите еще operator = и посмотрите что получится.
mMAg вне форума Ответить с цитированием
Старый 25.04.2011, 17:30   #8
Lazy maximka
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 29
По умолчанию

Всем спасибо! Разобрался, надо было перегружать операторы как члены класса, тему можно закрывать.
Lazy maximka вне форума Ответить с цитированием
Старый 25.04.2011, 17:46   #9
Alt_Shift
Пользователь
 
Аватар для Alt_Shift
 
Регистрация: 11.11.2010
Сообщений: 74
По умолчанию

Цитата:
Сообщение от malinoff Посмотреть сообщение
(насчет деления не скажу, не помню)
перегружается тоже, допустим так

Код:
ComplexType operator /(ComplexType &cT)
	{
		ComplexType temp;
		temp.real=(real*cT.real+imag*cT.imag)/(cT.real*cT.real+cT.imag*cT.imag);
		temp.imag=(imag*cT.real-real*cT.imag)/(cT.real*cT.real+cT.imag*cT.imag);
		return temp;
    };
Alt_Shift вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многомерный массив (матрица) Meatdealer Общие вопросы Delphi 2 03.12.2010 01:51
Как создать многомерный динамический массив в Delphi? Velross Помощь студентам 3 06.01.2010 20:50
многомерный не квадартный массив-константа Izhic Общие вопросы Delphi 3 11.11.2009 16:34
С++/С# многомерный массив DeFace Общие вопросы C/C++ 4 03.05.2009 16:07
Многомерный массив Iogan Gamba Puti Общие вопросы C/C++ 2 08.05.2008 15:20