Метод удаления столбца из матрицы

Модераторы: Romeo, Hawk, Absurd, WinMain, DeeJayC

Ответить
Аватара пользователя
Balbec
Сообщения: 34
Зарегистрирован: 15 янв 2008, 20:22

Метод удаления столбца из матрицы

Сообщение Balbec » 19 июн 2008, 19:59

Привет, ребята, помогите дописать метод удаление столбца из матрицы.
для этого нужно перегрузить оператор "-"
чтобы при записи С=А-3 (три) он выводил новую матрицу, только без третьего столбца. какие то недодуманные действия были :) но ничего не работает :(

Код: Выделить всё

matrix&matrix: :o perator - (int num)
{
	/*matrix(int sizen, int sizem-1);
	int k = 0;
	for (int i=0;i<sizen;i++)
	{
		for(int j=0;j<m-1;j++)
			{
			if (j != num)
				c[i][k++]=a[i][j];
			}
   //	k = 0;
	}
	delete a;
	matrix(int sizen, int sizem-1);
	a = c;*/

  //	matrix *a;
  //	a = new matrix(n,m);

	int **x;
	x=new int *[n];
	for (int i;i<n;i++)
		x[i]=new int [m-1];
	int k=0;
		for (i=0;i<n;i++)
	{
		for(int j=0;j<m-1;j++)
			{
			if (j != num)
				x[i][k++]=a.x[i][j];
			}
	}
   //	k = 0;
	return *this;
}

Vasilisk
Сообщения: 111
Зарегистрирован: 13 фев 2004, 18:43

Re: Метод удаления столбца из матрицы

Сообщение Vasilisk » 20 июн 2008, 03:39

Чё-то фигня какая-то. Однако, это не программа, а просто какой-то песец...

В чём проблема-то - "не перегружается" или "столбец не удаляет"?

Аватара пользователя
Balbec
Сообщения: 34
Зарегистрирован: 15 янв 2008, 20:22

Re: Метод удаления столбца из матрицы

Сообщение Balbec » 20 июн 2008, 11:07

перегружаться то перегружается, как правильно удалить из матрицы столбец, до самого алгоритма не могу додуматься.

Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Re: Метод удаления столбца из матрицы

Сообщение Romeo » 20 июн 2008, 13:03

Не могу разобраться в том, что написано. Алгоритм должен быть таким:

Код: Выделить всё

class matrix
{
   ...
   int m_N, m_M;
   float m_pData[MAX_N][MAX_M];
   ...
}

matrix matrix: :o perator - (int num)
{
   if (num >= 0 && num < m_M)
   {
      if (m_N > 1)
      {
         for (int i = 0; i < m_N; ++i)
         {
            for (int j = num; i < m_M - 1; ++j)
            {
               m_pData[i][j] = m_pData[i][j+1];
            }
         }
      }
      --m_M;
   }
   return *this;
}
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

Ответить