Многомерные массивы. Базовые алгоритмы программирования С++ и 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 просмотров
- Вконтакте
На входе — матрица размром (l,c) на выходе после транспонирования размеры перевернутся и будет (c,l).
UPD1: Ты аллоцировал матрицу А. Потом матрицу Б. И в конце удалил память только одной матрицы. Это небрежность?
UPD2: Как-то так должно быть. Лишние параметры поудалял. Добавил матрицу Б. Где-то перевернул индексы.
Транспонирование матрицы на С++
Подробно понятие матриц и операции транспонирования описаны в теме «Матрицы. Понятие. Применение«. Кратко — операция транспонирования должна выполнить «поворот» матрицы — замену строк столбцами.
Если исходная матрица состоит из N строк и M столбцов — то транспонированная должна содержать M строк и N столбцов. Если у вас выделена память под такие матрицы — то для транспонирования осталется выполнить:
Вся программа, включая выделение, освобождение памяти, а также вывод матрицы на экран тогда могла бы выглядеть так:
Результаты работы: 