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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
generation472
19 / 19 / 2
Регистрация: 04.11.2011
Сообщений: 555
Записей в блоге: 1
#1

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

10.03.2012, 16:53. Просмотров 1676. Ответов 10
Метки нет (Все метки)

Как транспонировать матрицу в C++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main()
{   int n , m;
    cout << "vvedite kolicestvo strok i stolbtov" << endl; 
    cin >> n >> m;
    cout << "Vvedite matritu " << n << " na " << m << endl;
    int a[n][m];
    
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            cin >> a[i][j];
            
            
  .......
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
Добавлено через 8 минут
C++
1
2
3
4
5
6
 for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
        { int t=a[i][j];
          a[i][j]=a[j][i];
          a[j][i]=t;
          }
так будет правильно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2012, 16:53     Как транспонировать матрицу
Посмотрите здесь:

Как транспонировать матрицу в виде вектора? - C++
Вот мой код..Как транспанировать матрицу представленную вектором #include &lt;stdio.h&gt; #define ROWS 4 #define COLS 3 ...

Как можно транспонировать матрицу NxM из одномерного массива? - C++
Задача была вывести из одномерного массива длинной в 30 символов матрицу, выводящуюся на экран в виде &quot;змейки&quot;, финальный результат...

Как транспонировать матрицу которая находится в одномерном массиве? - C++
Вся проблема в том, что матрица сохранена в обычном vector int x = 3; int y = 2; vector&lt;int&gt; v = { 1, 2, 3, 4, 5, 6 }; ...

Транспонировать матрицу - C++
Помогите с заданием: &quot;Транспонировать матрицу и вывести на экран элементы главной диагонали и диагонали, располагающейся под...

Транспонировать матрицу - C++
Вывести транспортированную матрицу размера .

транспонировать матрицу - C++
есть ли у кого алгоритм, как можно транспонировать матрицу? например ввожу матрицу for (i=0;i&lt;=v-1;i++) { for...

Транспонировать матрицу - C++
Как задать двумерный массив 3 на 3? Поменять строки и столбцы местами, строки станут столбцами, а столбцы строками? #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
10.03.2012, 16:58     Как транспонировать матрицу #2
Транспонирование матрицы
здесь всё подробно написано
и да у тебя кажется всё верно
sandye51
программист С++
682 / 584 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
10.03.2012, 17:00     Как транспонировать матрицу #3
Цитата Сообщение от A555 Посмотреть сообщение
и да у тебя кажется всё верно
неверно
в данном случае у ТС она транспонируется 2 раза и в итоге ничего не меняется
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
10.03.2012, 17:01     Как транспонировать матрицу #4
ну всё возможно)
generation472
19 / 19 / 2
Регистрация: 04.11.2011
Сообщений: 555
Записей в блоге: 1
10.03.2012, 17:04  [ТС]     Как транспонировать матрицу #5
sandye51, а как сделать чтобы один раз?
sandye51
программист С++
682 / 584 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
10.03.2012, 17:12     Как транспонировать матрицу #6
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
#define n 4
 
int main()
{
    srand(static_cast<unsigned int>(time(NULL)));
    int a[n][n];
 
    std::cout << "Under: " << std::endl;
    for (unsigned int i = 0; i < n; ++i)
    {
        for (unsigned int j = 0; j < n; ++j)
            std::cout << (a[i][j] = rand() % 100) << " ";
        std::cout << std::endl;
    }
 
    for (unsigned int i = 1; i < n; ++i)
        for (unsigned int j = 0; j < n - 1; ++j)
            std::swap(a[i][j], a[j][i]);
 
    std::cout << "After: " << std::endl;
    for (unsigned int i = 0; i < n; ++i)
    {
        for (unsigned int j = 0; j < n; ++j)
            std::cout << a[i][j]<< " ";
        std::cout << std::endl;
    }
 
    system("Pause");
    return EXIT_SUCCESS;
}
generation472
19 / 19 / 2
Регистрация: 04.11.2011
Сообщений: 555
Записей в блоге: 1
10.03.2012, 17:30  [ТС]     Как транспонировать матрицу #7
спс но мне это не подходит
мне нужно что бы я сам ввел матрицу а потом уже вывел транспонированную
если можешь исправь моё , а так спс за попытку
swap это меняет местами значения да?

Добавлено через 44 секунды
к тому же твой код тока для квадратной матрицы а мне нужно прямоугольная
sandye51
программист С++
682 / 584 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
10.03.2012, 17:31     Как транспонировать матрицу #8
generation472, ну так сделай чтобы матрицу самому можно было вводить, код транспонирования я тебе написал
или мне теперь все слюни за тобой подтирать?
generation472
19 / 19 / 2
Регистрация: 04.11.2011
Сообщений: 555
Записей в блоге: 1
11.03.2012, 11:54  [ТС]     Как транспонировать матрицу #9
твой метод работает только для квадратной матрицы мне нужно прямоугольная

Добавлено через 17 минут
и кстати он вообще не правильно работает в твоём коде после выходы два числа находятся не на своем месте
[IMG]http://s019.***********/i621/1203/93/87e52ea933ae.jpg[/IMG]

Добавлено через 17 минут
вот работает но только с квадратной матрицей а мне нужно прямоугольная
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
#include <iostream>
#include <cstdlib>
using namespace std;
 
 
int main()
{ int n,m;
    
    int a[n][m];
    cout << "Vvedite odinalovoe kolicestvo strok i stolbtov " << endl;
    cin >> n >> m;
     cout << "Vvedite matritu" << std::endl;
   for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
            cin >> a[i][j];
 
    for (unsigned int i = 1; i < n; ++i)
        for (unsigned int j = 0; j < m - 1; ++j)
            swap(a[i][j], a[j][i]);
 
    std::cout << "After: " << std::endl;
    for (unsigned int i = 0; i < n; ++i)
    {
        for (unsigned int j = 0; j < m; ++j)
            cout << a[i][j] <<" ";
           cout << endl;
    }
 
    system("Pause");
    return EXIT_SUCCESS;
}
Добавлено через 17 часов 27 минут
как исправить программу что бы она работала с прямоугольной матрицей?
fi11er
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 9
11.03.2012, 15:23     Как транспонировать матрицу #10
Когда ты транспонируешь прямоугольную матрицу a[n][m] она превращается в a[m][n], поэтому я думаю, что нужно создавать новый массив b[m][n] и копировать туда исходную
C
1
2
3
for(i=0;i<n;i++)
    for(j=0;j<m;j++)
        b[j][i]=a[i][j];
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2012, 15:26     Как транспонировать матрицу
Еще ссылки по теме:

Транспонировать матрицу (borland c++) - C++
Дано натуральное число n, определяющий количество строк и столбцов в де- которой заданной квадратной матрицы целых чисел М1. Выполнить...

Транспонировать произвольную матрицу - C++
// LR4.cpp: определяет точку входа для консольного приложения. // #include &lt;stdafx.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; ...

транспонировать матрицу А [1 7 6 ] [0 2 3] [9 5 0 ]. заранее благодарен - C++
транспонировать матрицу А

Транспонировать целочисленную матрицу 5x5 - C++
транспонировать целочисленную матрицу 5x5.

Транспонировать уже готовую матрицу - C++
Задание:Ввести с консоли n – размерность матрицы a. Задать значения элементов матрицы в интервале значений от -n до n с помощью датчика...


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

Или воспользуйтесь поиском по форуму:
Duha666
51 / 51 / 5
Регистрация: 10.03.2012
Сообщений: 138
11.03.2012, 15:26     Как транспонировать матрицу #11
Более лаконичное решение:
C++
1
2
3
for (int i = 0; i < n; i++)
  for (int j = i + 1; j < n; j++)
    swap(a[i], a[j]);
Yandex
Объявления
11.03.2012, 15:26     Как транспонировать матрицу
Ответ Создать тему
Опции темы

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