Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 01.04.2017
Сообщений: 15
1

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

22.07.2017, 20:13. Показов 623. Ответов 1
Метки нет (Все метки)

Объясните где ошибка и как ее исправить
Задание написать функцию переворачивающие двумерный массив. так чтобы Х у первого массива было бы У у другого и наоборот.
Пример:
Оригинал

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

Транспонирование
1 7 13 19 25
2 8 14 20 26
3 9 15 21 27
4 10 16 22 28
5 11 17 23 29
6 12 18 24 30

Вот мой код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int **transpose(const int * const * m, unsigned rows, unsigned cols) {
    int **ba = new int *[cols];
    ba[0] = new int[rows*cols];
    for (int i = 1; i != cols; ++i) {
        ba[i] = ba[i - 1] + rows;
    };
    int f=rows;
    int h=cols;
    
    for (; f !=0; f--) {
        for (; h !=0; h--) {
 
            ba [h][f]=m[f][h] ;
            
        };
        h=cols;
    };
    
 
    return ba;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.07.2017, 20:13
Ответы с готовыми решениями:

транспонирование матрицы
Имеется матрица размерности(6 на 3) необходимо ее транспонировать! вот мой код count=3; n=6;...

Транспонирование матрицы
int _tmain(int argc, _TCHAR* argv) { const int n=5; int a; srand(GetTickCount()); for (int...

Транспонирование матрицы
Всем привет есть код транспонирования матрицы. Алгоритм вроде бы рабочий но, почему то не работает...

Транспонирование матрицы
Есть матрица M*N, её требуется транспонировать относительно побочной диагонали. Использую...

1
278 / 250 / 209
Регистрация: 14.11.2016
Сообщений: 948
22.07.2017, 21:05 2
Иван76Чернов,
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
81
82
83
84
85
86
87
88
89
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
 
#define     type_m      int
#define     MIN_RAND    0
#define     MAX_RAND    9
 
template<typename T> T** transpose(T**, const unsigned, const unsigned);
template<typename T> void fill_rand_values
    (T**, const unsigned, const unsigned, const int, const int);
template<typename T> void print_matrix(T**, const unsigned, const unsigned);
template<typename T> T** get_memory(const unsigned, const unsigned);
template<typename T> void delete_memory(T **, const unsigned);
 
int main(void)
{
    std::srand(unsigned(std::time(NULL)));
    unsigned row(0), col(0);
    std::cout << "Enter size matrix (row & col): ";
    std::cin >> row >> col;
    
    type_m **matrix = get_memory<type_m>(row, col);
    fill_rand_values<type_m>(matrix, row, col, MIN_RAND, MAX_RAND);
    print_matrix<type_m>(matrix, row, col);
 
    type_m **transport_matrix = transpose(matrix, row, col);
    print_matrix<type_m>(transport_matrix, col, row);
 
    delete_memory(matrix, row);
    delete_memory(transport_matrix, col);
 
    _getch();
    return EXIT_SUCCESS;
}
 
template<typename T> T** get_memory(const unsigned row, const unsigned col)
{
    T **matrix(new T*[row]);
    for (unsigned i(0); i < row; matrix[i++] = new T[col]);
    return matrix;
}
 
template<typename T> void delete_memory(T **matrix, const unsigned row)
{
    for (unsigned i(0); i < row; delete[] matrix[i++]);
    delete[] matrix;
}
 
template<typename T> T** transpose
    (T **matrix, const unsigned row, const unsigned col)
{
    T **temp(new T*[col]);
    for (unsigned i(0); i < col; i++)
    {
        temp[i] = new T[row];
        for (unsigned j(0); j < row; j++)
        {
            temp[i][j] = matrix[j][i];
        }
    }
    return temp;
}
 
template<typename T> void fill_rand_values
    (T **matrix, const unsigned row, const unsigned col, const int min, const int max)
{
    for (unsigned i(0); i < row; i++)
    {
        for (unsigned j(0); j < col; j++)
        {
            matrix[i][j] = min + rand() % ((min < 0 ? -min : min * 0) + max + 1);
        }
    }
}
 
template<typename T> void print_matrix(T **matrix, const unsigned row, const unsigned col)
{
    for (unsigned i(0); i < row; i++)
    {
        for (unsigned j(0); j < col; j++)
        {
            std::cout << matrix[i][j] << " ";
        }
        std::cout << std::endl;
    }
    std::cout << std::endl;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.07.2017, 21:05

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

Транспонирование матрицы
Здравствуйте! Как повернуть не квадратную матрицу? То есть: 3 2 1 4 15 9 3 7...

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

Транспонирование матрицы
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; void transponirovanie(int**mass1, int stolb, int str)...

Транспонирование матрицы
код запускается, но ничего толком не происходит #include &lt;iostream&gt; #include &lt;iomanip&gt;...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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