Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 09.03.2018
Сообщений: 13

Транспонирование матрицы отдельными модулями

10.11.2019, 12:08. Показов 3712. Ответов 21

Студворк — интернет-сервис помощи студентам
Не получается транспонирование матрицы с помощью функций, помещенных в отдельные модули. Если размер матрицы 2х3, то в Visual Studio "ошибка нарушение прав доступа при записи по адресу 0xFDFDFDFD" на 11 строчке файла matrixtrans.cpp. Если размер матрицы например 3х3, то из исходной матрицы
1 2 3
4 5 6
7 8 9
делает:
1 4 7
4 5 8
7 8 9, где последний столбик и первая строчка вроде бы правильные.
main.cpp
Кликните здесь для просмотра всего текста
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
#include "stdafx.h"
#include "Input.h"
#include "MatrixTrans.h"
#include "MatrixView.h"
#include <iostream>
using namespace std;
 
int** InitMatrix(int n, int m)   //Выделение памяти для матрицы
{
    int **Matrix = new int*[n];
    for (int i = 0; i < n; i++)
        Matrix[i] = new int[m];
    return Matrix;
}
int main()
{
setlocale(LC_ALL, "Russian");
 int n,m;
 SizeInput(n, m);
 int **Matrix;
 Matrix = InitMatrix(n, m); //Выделение памяти для матрицы
 Fill(Matrix, n, m);
 MatrixView(Matrix, n, m);
 cout << "\n";
 MatrixTrans(Matrix, n, m);
 Matrix = MatrixTrans(Matrix, n, m);
 MatrixView(Matrix, n, m);
//освобождаем память
    for (int i = 0; i < n; ++i)
    delete[] Matrix[i];
    delete[] Matrix;
 
system("pause");
 return 0;
}

input.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
#ifndef MatrixLoadH
#define MatrixLoadH
 
void SizeInput(int&, int&);
void Fill(int **,int, int);
#endif

input.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "Input.h"
#include <iostream>
using namespace std;
 
 
void SizeInput(int &n, int &m)
{
    cout << "Введите кол-во строк в матрицы n = ";
    cin >> n; //Введем n
    cout << "Введите кол-во столбцов матрицы m = ";
    cin >> m; //Введем m
    
}
void Fill(int **Matrix,int n,int m)
{
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++) {
            cin >> Matrix[i][j];
        }
}

matrixview.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
#ifndef MatrixViewH
#define MatrixViewH
 
void MatrixView(int **, int, int);
 
#endif

matrixview.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include "MatrixView.h"
using namespace std;
 
void MatrixView(int **Matrix, int n, int m)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++) 
            cout << Matrix[i][j] << " ";
            cout << endl;
        
    }
}

matrixtrans.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
#ifndef MatrixTransH
#define MatrixTransH
 
int**  MatrixTrans(int **, int,int);
#endif

matrixtrans.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <math.h>
#include <iostream>
#include "MatrixTrans.h"
 
int** MatrixTrans(int ** Matrix, int n, int m)
{
    int **tMatrix =   Matrix;
    using namespace std;
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
            tMatrix[i][j] = Matrix[j][i];
    int temp = n;
    n = m;
    m = temp;
    return tMatrix;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.11.2019, 12:08
Ответы с готовыми решениями:

Транспонирование матрицы
Доброго времени суток,я вроде бы написал функцию,которая вроде бы это делает, однако запутался в циклах,а точнее каждому элементу...

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

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

21
863 / 513 / 215
Регистрация: 19.01.2019
Сообщений: 1,216
10.11.2019, 20:50
Лучший ответ Сообщение было отмечено 55tyui32 как решение

Решение

Студворк — интернет-сервис помощи студентам
Кликните здесь для просмотра всего текста

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
#include <iostream>
using namespace std;
 
void SizeInput(int& n, int& m)
{
    cout << "Введите кол-во строк в матрицы n = ";
    cin >> n; //Введем n
    cout << "Введите кол-во столбцов матрицы m = ";
    cin >> m; //Введем m
 
}
void Fill(int** Matrix, int n, int m)
{
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++) {
            Matrix[i][j] = i+j;
        }
}
void MatrixView(int** Matrix, int n, int m)
{
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++)
            cout << Matrix[i][j] << " ";
        cout << endl;
 
    }
}
int** InitMatrix(int n, int m)   //Выделение памяти для матрицы
{
    int** Matrix = new int* [n];
    for (int i = 0; i < n; i++)
        Matrix[i] = new int[m];
    return Matrix;
}
int** MatrixTrans(int** Matrix, int& n, int& m)
{
    int** tMatrix = InitMatrix(m,n);
    using namespace std;
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
            tMatrix[i][j] = Matrix[j][i];
    int temp = n;
    n = m;
    m = temp;
    return tMatrix;
}
void freeMatrix(int** Matrix, int n) {
    //освобождаем память
    for (int i = 0; i < n; ++i)
        delete[] Matrix[i];
    delete[] Matrix;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n, m;
    SizeInput(n, m);
    int** Matrix;
    Matrix = InitMatrix(n, m); //Выделение памяти для матрицы
    Fill(Matrix, n, m);
    MatrixView(Matrix, n, m);
    cout << "\n";
 
    
    int** oldMatrix = Matrix;
    Matrix = MatrixTrans(Matrix, n, m);
    freeMatrix(oldMatrix, m);
    MatrixView(Matrix, n, m);
    freeMatrix(Matrix, n);
    system("pause");
    _CrtDumpMemoryLeaks();
    return 0;
 
}

Вот тоже самое, что и в пошлом спойлере, тока с удалением старой матрицы. Собственно, код работает с любым размером. Так что смотрите сами, чем он отличается от вашего.
1
0 / 0 / 0
Регистрация: 09.03.2018
Сообщений: 13
10.11.2019, 21:02  [ТС]
marat_miaki, nalbe666, спасибо вам огромное! Создал новый проект, скопировал Ваш код, все завелось. Пойду искать отличия ради интереса
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.11.2019, 21:02

Транспонирование матрицы
Всем привет! Написала класс матрица. Но почему-то не работает функция транспонирования и перегрузка оператора *=. Помогите, пожалуйста,...

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

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

Транспонирование матрицы
Транспонировать матрицу(сделать строки столбцами) z = \begin{vmatrix} 2 &amp; 5 &amp; 1 &amp; 0\\ 0 &amp; 3 &amp; 5 &amp; 4\\ 1 &amp; 2 &amp; 0 &amp; 3...

Транспонирование матрицы
Здравствуйте! Помогите пожалуйста! Создать целочисленную матрицу размерностью N=5 строк и M=3 столбцов. Транспонировать матрицу и...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru