Как транспонировать матрицу в с
Перейти к содержимому

Как транспонировать матрицу в с

  • автор:

Многомерные массивы. Базовые алгоритмы программирования С++ и C

1.(Транспонирование матрицы.) [ править ]

Транспонировать заданную квадратную матрицу размерности N.

Алгоритм на языке С++

using namespace std ;

int _tmain(int argc, _TCHAR* argv[])

cout << «Initializacia matrici\n» ;

for ( int i = 0; i < n; i++ )

//транспонирование матрицы

for ( int i = 1; i < n; i++ )

for ( int j = 0; j < n — 1; j++ )

//вывод транспонированной матрицы обычным способом

cout << «\nTransponirovannay matrica\n» ;

2. Создать матрицу размерности n, состоящую из чисел 1,2,3,4. заполненную по «спирали» [ править ]

// Обнуление матрицы и инициализация указателя for (f = 0; f < n; ++f) for (j = 0; j < n; ++j)

// Правый верхний столбец for (j = k; j < (n-k+1); j++) a[j][n-k]=i++;

// Нижний горизонтальный столбец for (j = (n-k-1); j >= (k-1); —j) a[n-k][j]=i++;

// Левый верхний столбец for (j = (n-k-1); j >= k; j—) a[j][k-1]=i++; > if ( n % 2 ) a[n1][n1]=n*n; cout<<«vivod matricy \n»;

транспонирование матрицы в C++ —> как реализовать?

Хм. сижу вот щас и думаю над реализацией.
У кого какие идею по этому поводу.

ЗЫ Кто не знает что такое транспонирование матрицы — http://www.mirgames.ru/articles/base/3dmath.html

Re: транспонирование матрицы в C++ —> как реализовать?

В чем проблемы-то?

for (int i = 0; x < size; i++) for (int j = 0; j < i; j++)

Может где ошибки, компилятора под рукой, но идея такая.

Re: транспонирование матрицы в C++ —> как реализовать?

Re: транспонирование матрицы в C++ —> как реализовать?

s/tmp = a[i][i]/tmp = a[i][j]; Чёрт

Re: транспонирование матрицы в C++ —> как реализовать?

>У кого какие идею по этому поводу.

у меня. если реализация столь примитивного алгоритма вызывает проблемы — не надо тебе пытаться программировать. поучись ещё лет 10-15, тогда повтори попытку.

Re: транспонирование матрицы в C++ —> как реализовать?

Я бы ещё понял если бы обратную там искать матрицу и то это элементарно. а уж матриц не суметь транспонировать — это как-то. грустно.

Re: транспонирование матрицы в C++ —> как реализовать?

Если транспонирование нужно не для оптимизации доступа к памяти при интенсивных вычислениях с большими матрицами, то транспонировать не нужно — достаточно просто смотреть на матрицу, как на хранящуюся в памяти в другом виде, чтоб она была уже транспонирована.

Re: транспонирование матрицы в C++ —> как реализовать?

одна из самых глубоких мыслей в треде 🙂

Re: транспонирование матрицы в C++ —> как реализовать?

А на двумерную матрицу можно смотреть как на одномерную, тогда надобность в транспонировании отпадает.

Re: транспонирование матрицы в C++ —> как реализовать?

> одна из самых глубоких мыслей в треде 🙂

вполне достаточно повернуть голову на 90 градусов перпендикулярно своей оси.

Re: транспонирование матрицы в C++ —> как реализовать?

> вполне достаточно повернуть голову на 90 градусов перпендикулярно своей оси.

не путай собственные и несобственные движения

Re: транспонирование матрицы в C++ —> как реализовать?

Народ, че вы ржОте-то?

Транспонирование матриц — давняя, почтенная и отнюдь не тривиальная задача, взгляните в Википедию, хотя бы: http://en.wikipedia.org/wiki/In-place_matrix_transposition

Re: транспонирование матрицы в C++ —> как реализовать?

> у меня. если реализация столь примитивного алгоритма вызывает проблемы — не надо тебе пытаться программировать. поучись ещё лет 10-15, тогда повтори попытку.

Хм. друг мой =)
А вы не расслабляетесь таким путем?? Объясняю — когда тупо сидишь целый день и кодишь на работе, когда башка уже забита и не работает выход один — размяться, мы всем отделом (5 человеков) выходим и играем в сокс часик в обеденный перерыв=)))) как не глупо звучит, но помогает как разрядка и отдых, а потом делаем какую-нибудь левую задачу по программированию, выйграет тот кто сделает её оптимизированней..
Транспонирование матрицы — проблем не вызывает, но на тот алгоритм, который окажется оптимизированней всего я бы посмотрел..

Как транспонировать прямоугольную матрицу?

Квадратная матрица транспонируется, а прямоугольная нет. Можете помочь?

  • Вопрос задан 17 дек. 2022
  • 50 просмотров
  • Facebook
  • Вконтакте
  • Twitter

На входе — матрица размром (l,c) на выходе после транспонирования размеры перевернутся и будет (c,l).

UPD1: Ты аллоцировал матрицу А. Потом матрицу Б. И в конце удалил память только одной матрицы. Это небрежность?

UPD2: Как-то так должно быть. Лишние параметры поудалял. Добавил матрицу Б. Где-то перевернул индексы.

Транспонирование матрицы на С++

Подробно понятие матриц и операции транспонирования описаны в теме «Матрицы. Понятие. Применение«. Кратко — операция транспонирования должна выполнить «поворот» матрицы — замену строк столбцами.

Если исходная матрица состоит из N строк и M столбцов — то транспонированная должна содержать M строк и N столбцов. Если у вас выделена память под такие матрицы — то для транспонирования осталется выполнить:

Вся программа, включая выделение, освобождение памяти, а также вывод матрицы на экран тогда могла бы выглядеть так:

Результаты работы:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *