Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Renevity
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 23
#1

Функция транспонирования динамической матрицы N*M - C++

15.03.2014, 11:59. Просмотров 1886. Ответов 4
Метки нет (Все метки)

Собственно сабж. Если точнее, проблема возникла с не самим алгоритмом транспонирования, а с выводом (сначала выводится обычная). Не получается вывести с помощью функции вывода, матрицу M*N, т.к как понимаю в функции вывода память выделяется соответственно для исходной матрицы N*M. Пытался менять память и присваивать значения, но я такой нуб, что у меня только всё крэшилось.

Добавлено через 17 часов 0 минут
Ап!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2014, 11:59     Функция транспонирования динамической матрицы N*M
Посмотрите здесь:

Функция транспонирования матрицы - C++
(другими словами, просто двумерный целочисленный массив) размера rows×cols, и возвращает транспонированную матрицу MT (тоже двумерный...

Функция транспонирования матрицы - C++
Здравствуйте! В университете начали изучать подпрограммы, пока не могу толком в них разобраться. Необходимо написать функцию для...

Функция транспонирования матрицы - C++
Тема неоднократно поднималась, прошу прощения, но всё же я очень начинающий на с++, и написал всё вроде просто, но он ни в какую не...

Функция транспонирования квадратной матрицы - C++
написать функцию транспонирвания квадратной матрицы (т.е. поворота исходной матрицы на 90градусов).с ее помощью определить является ли...

функция транспонирования - C++
int** transp(int** a, int n, int m) { int i, j; int** arr = new int*; for (int i = 0; i < n; ++i) arr = new int; for (i =...

Функция транспонирования массива - C++
Написать функцию, которая транспонирует заданный в качестве параметра массив типа int (т.е. меняет местами равноудалённые от концов массива...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_include
Студент
52 / 52 / 12
Регистрация: 17.09.2012
Сообщений: 291
Записей в блоге: 2
Завершенные тесты: 1
15.03.2014, 12:21     Функция транспонирования динамической матрицы N*M #2
Может будет полезно: матрица N*N. Думаю, легко будет преобразовать в нужную вам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// 7_1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <math.h>
#include <locale>
 
using namespace std;
 
#define n 5
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    float matrixOne[n][n];
    cout << "Введите элементы матрицы" << endl;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
        cout<< "Matrix A[" << i+1 << "][" << j+1 << "]: " ;
        cin >> matrixOne[i][j];
        cout << endl;
        }
    }
    
    cout << "Matrix A:" << endl;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
        cout.width(5);
        cout << " " << matrixOne[i][j];
        }
        cout << endl;
    }
 
    cout << endl << "The transpose:" << endl;
    for ( int j = 0; j < n; j++)
    {
        for (int i = 0; i < n; i++)
        {
            cout.width(5);
            cout << " " << matrixOne[i][j];
        }
        cout << endl;
    }
 
 
    _getch();
    return 0;
}
Renevity
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 23
16.03.2014, 12:57  [ТС]     Функция транспонирования динамической матрицы N*M #3
С матрицей N*N всё просто. Как преобразовать нужную, т.е чтобы работало с N*M, я не пойму.

Добавлено через 6 часов 34 минуты
Тишина, потому что трудновато или наоборот слишком просто? Подкиньте хотя бы идею, что нужно примерно добавить к алгоритму транспонирования? Чему нужно уделить внимание?

Добавлено через 17 часов 35 минут
Ок. Спасибо.
_include
Студент
52 / 52 / 12
Регистрация: 17.09.2012
Сообщений: 291
Записей в блоге: 2
Завершенные тесты: 1
16.03.2014, 13:17     Функция транспонирования динамической матрицы N*M #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Renevity Посмотреть сообщение
С матрицей N*N всё просто. Как преобразовать нужную, т.е чтобы работало с N*M, я не пойму.
Добавлено через 6 часов 34 минуты
Тишина, потому что трудновато или наоборот слишком просто? Подкиньте хотя бы идею, что нужно примерно добавить к алгоритму транспонирования? Чему нужно уделить внимание?
Добавлено через 17 часов 35 минут
Ок. Спасибо.
Я же не живу в компьютере, правильно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream>
#include <iomanip>
 
//----------------
 
int** new2DArray(const int m, const int n)
{
   int** arr = new int*[m];
   for(int i = 0; i < m; ++i)
      arr[i] = new int[n];
   return arr;
}
 
//---------------
void delete2DArray(int** arr, const int m)
{
   for(int i = 0; i < m; ++i)
      delete[] arr[i];
   delete[] arr;
}
 
//--------------- 
 
int** newTransposeMatrix(int** matrix, const int m, const int n) 
{
   int** res = new2DArray(n, m);
   
   for(int i = 0; i < m; ++i)    
      for(int j = 0; j < n; ++j)        
     res[j][i] = matrix[i][j];            
   
   return res;
}
 
//----------------
void print2DArray(int** arr, const int m, const int n)
{
   for(int i = 0; i < m; ++i)
   {
      for(int j = 0; j < n; ++j)
     std::cout << std::setw(4) << arr[i][j];
      std::cout << '\n';
   }   
}
//---------------
 
int main()
{
   // вводим размеры матрицы
   std::cout << "Input m: ";
   int m;
   std::cin >> m;
   
   std::cout << "Input n: ";
   int n;
   std::cin >> n;
   
   // создаём новую матрицу MxN
   int** mtrx = new2DArray(m, n);
 
   // заполняем 
   for(int i = 0; i < m; ++i)   
      for(int j = 0; j < n; ++j)      
     mtrx[i][j] = j;
              
   // выводим
   std::cout << "Matrix\n";
   print2DArray(mtrx, m, n);
 
   // получаем транспонированную матрицу и выводим её на экран
   int** tmtrx = newTransposeMatrix(mtrx, m, n);
   std::cout << "\nTranspose matrix\n";   
   print2DArray(tmtrx, n, m);
 
   // освобождаем выделенную память
   delete2DArray(mtrx, m);
   delete2DArray(tmtrx, n);
 
   return 0;
}
Прежде чем кричать, поискали бы... Код взят отсюда:
Функция транспонирования матрицы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2014, 13:28     Функция транспонирования динамической матрицы N*M
Еще ссылки по теме:

Неверный результат транспонирования матрицы - C++
Помогите, пожалуйста, разобраться - почему программа выдает в результате 0 1 1 1 0 1 1 1 0 Хотя ожидалось, что результатом...

функцию для транспонирования матрицы - C++
Как Написать функцию для транспонирования матрицы (меняет местами стоки и столбцы), но не роспечатывать обычную как здесь. # include...

Разработать программу транспонирования матрицы - C++
Разработать* программу транспонирования матрицы, размер которой (количество строк и количество столбцов) вводится с клавиатуры. Матрица...

Написать функции умножения и транспонирования матрицы - C++
4.Дана квадратная матрица А. Написать программу вычисления матрицы Ат*Ат*А*А, Ат - транспонированная матрица. Вычисление произведения...

Выполнить операцию транспонирования прямоугольной матрицы - C++
Выполнить операцию транспонирования прямоугольной матрицы A (m, n), m не равно n, не выделяя дополнительный массив для хранения результата.

Выполнить операцию транспонирования прямоугольной матрицы - C++
Выполнить операцию транспонирования прямоугольной матрицы A (m, n), m не равно n, не выделяя дополнительный массив для хранения результата.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Renevity
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 23
16.03.2014, 13:28  [ТС]     Функция транспонирования динамической матрицы N*M #5
Цитата Сообщение от _include Посмотреть сообщение
Я же не живу в компьютере, правильно?

Прежде чем кричать, поискали бы... Код взят отсюда:
Функция транспонирования матрицы
Благодарю, пойду вникать в суть, что я делал не так.

Тот топик вроде бы не находил, а до этого весь гугл изнасиловал.
Yandex
Объявления
16.03.2014, 13:28     Функция транспонирования динамической матрицы N*M
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru