Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 21.11.2011
Сообщений: 23

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

05.12.2011, 22:31. Показов 1926. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
дана матрица прямоугольная нужно ее транспонировать(желательно на языке си)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.12.2011, 22:31
Ответы с готовыми решениями:

Дана целочисленная прямоугольная матрица
Здравствуйте уважаемые программисты. Помогите пожалуйста с заданием. Дана целочисленная прямоугольная матрица. Определить: 1)...

Дана целочисленная прямоугольная матрица
Доброго времени суток. Люди, от вас зависит идти мне в армию или нет. 4 месяца лежал в больнице, когда вернулся на учёбу ничего не знал....

C++ Дана целочисленная прямоугольная матрица
Дана целочисленная прямоугольная матрица. Определить: 1) количество столбцов, содержащих хотя бы один нулевой элемент. 2) номер...

10
 Аватар для Roof
155 / 155 / 44
Регистрация: 03.11.2010
Сообщений: 393
05.12.2011, 23:37
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 <stdio.h>
#include <stdlib.h>
 
#define size 4 // порядок матрицы
 
// функция обмена значений
void swap( int* x, int* y ) {
    *x += *y;
    *y = *x - *y;
    *x -= *y;
}
 
int main( void ) {
    int i, j;
    //дана матрица
    int matrix[ size ][ size ] = { { 3, 8, 7, 5 },
                                   { 9, 0, 4, 1 },
                                   { 6, 8, 5, 9 },
                                   { 7, 0, 3, 2 } };
 
    // транспонируем матрицу
    for ( i = 0; i < size; ++i )
        for ( j = i + 1; j < size; ++j )
            swap( &matrix[ i ][ j ], &matrix[ j ][ i ] );
 
    // выводим на экран
    for ( i = 0; i < size; ++i ){
        for ( j = 0; j < size; ++j )
            printf("%d  ", matrix[ i ][ j ]);
        printf("\n");
    }
 
    return EXIT_SUCCESS;
}
1
1 / 1 / 0
Регистрация: 21.11.2011
Сообщений: 23
05.12.2011, 23:45  [ТС]
Цитата Сообщение от Roof Посмотреть сообщение
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 <stdio.h>
#include <stdlib.h>
 
#define size 4 // порядок матрицы
 
// функция обмена значений
void swap( int* x, int* y ) {
    *x += *y;
    *y = *x - *y;
    *x -= *y;
}
 
int main( void ) {
    int i, j;
    //дана матрица
    int matrix[ size ][ size ] = { { 3, 8, 7, 5 },
                                   { 9, 0, 4, 1 },
                                   { 6, 8, 5, 9 },
                                   { 7, 0, 3, 2 } };
 
    // транспонируем матрицу
    for ( i = 0; i < size; ++i )
        for ( j = i + 1; j < size; ++j )
            swap( &matrix[ i ][ j ], &matrix[ j ][ i ] );
 
    // выводим на экран
    for ( i = 0; i < size; ++i ){
        for ( j = 0; j < size; ++j )
            printf("%d  ", matrix[ i ][ j ]);
        printf("\n");
    }
 
    return EXIT_SUCCESS;
}


А без подпрограммы можно? а вроде Swap в ansi c нету(
0
 Аватар для Roof
155 / 155 / 44
Регистрация: 03.11.2010
Сообщений: 393
06.12.2011, 00:01
swap - это функция, которая написана мной, я мог ее назвать и foo или func.
Если хочешь без подпрограммы, то удали полностью функцию swap и измени участок кода:
C
1
2
3
4
5
6
7
    // транспонируем матрицу
    for ( i = 0; i < size; ++i )
        for ( j = i + 1; j < size; ++j ){
            matrix[ i ][ j ] += matrix[ j ][ i ];
            matrix[ j ][ i ] = matrix[ i ][ j ] - matrix[ j ][ i ];
            matrix[ i ][ j ] -= matrix[ j ][ i ];
        }
1
1 / 1 / 0
Регистрация: 21.11.2011
Сообщений: 23
06.12.2011, 00:36  [ТС]
еще пару вопросов: что такое size(если число то ведь матрица прямоугольная , то что писать в строки и столбцы? ведь при разных матрицах разные столбцы и строки)(например из a[2][3] в матрицу a[3][2])

Добавлено через 1 минуту
{ { 3, 8, 7, 5 },
{ 9, 0, 4, 1 },
{ 6, 8, 5, 9 },
{ 7, 0, 3, 2 } }; - это уже ввод переменных? если да, то - вдруг у меня матрица 7 на 9 мне что все писать так?)

Добавлено через 9 минут
j = i + 1 а почему тут так...а не просто j=0

Добавлено через 12 минут
что то не пашит прога(
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
06.12.2011, 01:46
Roof, молодец, но это лишняя работа. можно просто индексами поиграться
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
#include <stdio.h>
#include <stdlib.h>
 
#define size 4 // порядок матрицы
 
int main( void )
{
    int i, j;
    //дана матрица
    int matrix[ size ][ size ] =
    {
        { 3, 8, 7, 5 },
        { 9, 0, 4, 1 },
        { 6, 8, 5, 9 },
        { 7, 0, 3, 2 }
    };
 
    //исходная матрица
    for ( i = 0; i < size; ++i )
    {
        puts("");
        for ( j = 0; j < size; ++j )
            printf("%d  ", matrix[ i ][ j ]);
    }
    puts("");
    // транспонированная
    for ( i = 0; i < size; ++i )
    {
        puts("");
        for ( j = 0; j < size; ++j )
            printf("%d  ", matrix[ j ][ i ]);
    }
    puts("");
 
    return EXIT_SUCCESS;
}
1
1 / 1 / 0
Регистрация: 21.11.2011
Сообщений: 23
06.12.2011, 09:55  [ТС]
так я тоже делал...мне препод сказал что я тупо обманываю прогу....она не распознает что матрица транспонированная
0
 Аватар для Roof
155 / 155 / 44
Регистрация: 03.11.2010
Сообщений: 393
06.12.2011, 11:13
2 alkagolik - тоже вариант, но в моем понимании матрица остается нетранспонированной, а просто вывод матрицы в другом порядке. Нну это мое мнение субъективное.

2 Chiko94

что то не пашит прога(
Моя программа работает как нужно.
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
#include <stdio.h>
#include <stdlib.h>
 
#define size 4 // порядок матрицы
 
int main( void ) {
    int i, j;
    //дана матрица
    int matrix[ size ][ size ] = { { 3, 8, 7, 5 },
                                   { 9, 0, 4, 1 },
                                   { 6, 8, 5, 9 },
                                   { 7, 0, 3, 2 } };
 
    // транспонируем матрицу
    for ( i = 0; i < size; ++i )
        for ( j = i + 1; j < size; ++j ){
            matrix[ i ][ j ] += matrix[ j ][ i ];
            matrix[ j ][ i ] = matrix[ i ][ j ] - matrix[ j ][ i ];
            matrix[ i ][ j ] -= matrix[ j ][ i ];
        }
 
    // выводим на экран
    for ( i = 0; i < size; ++i ){
        for ( j = 0; j < size; ++j )
            printf("%d  ", matrix[ i ][ j ]);
        printf("\n");
    }
 
    return EXIT_SUCCESS;
}
Вот вывод у меня в консоле:
Code
1
2
3
4
3  9  6  7  
8  0  8  0  
7  4  5  3  
5  1  9  2
Про size.
C
1
...size 4 // порядок матрицы
j = i + 1 а почему тут так...а не просто j=0
Потому что разбирай внимательней алгоритм.
Попробуй заменить на j = 0 и погляди результат.

Ты писал:
дана матрица прямоугольная
В связи с этим я не понимаю причем тут матрица 7 на 9

это уже ввод переменных?
- это не ввод переменных, а инициализация массива. Ведь по условию задачи матрица дана.

Добавлено через 9 минут
В связи с этим я не понимаю причем тут матрица 7 на 9
Извиняюсь, насчет прямоугольной и квадратной это я уже перепутал.
У меня для квадратной матрицы, переделать для прямоугольной очень просто.
0
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
06.12.2011, 11:16
Цитата Сообщение от Chiko94 Посмотреть сообщение
дана матрица прямоугольная
Все такие квадратная или прямоугольная?
0
1 / 1 / 0
Регистрация: 21.11.2011
Сообщений: 23
06.12.2011, 11:51  [ТС]
прямоугольная

Добавлено через 59 секунд
а у тебя тут { 3, 8, 7, 5 }, квадратная матирица
{ 9, 0, 4, 1 },
{ 6, 8, 5, 9 },
{ 7, 0, 3, 2 } }
0
 Аватар для Roof
155 / 155 / 44
Регистрация: 03.11.2010
Сообщений: 393
06.12.2011, 12:50
Квадрат - ведь частный случай прямоугольника.
На примере матрицы 4 x 5:
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
#include <stdio.h>
#include <stdlib.h>
 
#define size_i 4 // количество строк
#define size_j 5 // количество столбцов
int main( void ) {
    int i, j;
    //дана матрица ( размер заведомо больше - 5 на 5, так как нужно место чтобы транспонировать )
    int matrix[ size_j ][ size_j ] = { { 3, 8, 7, 5, 7 },
                                       { 9, 0, 4, 1, 6 },
                                       { 6, 8, 5, 9, 0 },
                                       { 7, 0, 3, 2, 1 }};
 
    // транспонируем матрицу
    for ( i = 0; i < size_i; ++i )
        for ( j = i + 1; j < size_j; ++j ) {
            matrix[ i ][ j ] += matrix[ j ][ i ];
            matrix[ j ][ i ] = matrix[ i ][ j ] - matrix[ j ][ i ];
            matrix[ i ][ j ] -= matrix[ j ][ i ];
        }
 
    // выводим на экран
    for ( i = 0; i < size_j; ++i ) {
        for ( j = 0; j < size_i; ++j )
            printf( "%d  ", matrix[ i ][ j ] );
        printf( "\n" );
    }
 
    return EXIT_SUCCESS;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.12.2011, 12:50
Помогаю со студенческими работами здесь

Дана целочисленная прямоугольная матрица
)Дана целочисленная прямоугольная матрица. определить: 1) Количество отрицательных элементов в тех строках которые содержат хотябы один...

Дана целочисленная прямоугольная матрица
Дана целочисленная прямоугольная матрица. 1) Найдите наименьший элемент среди четных строк этой матрицы. 2) Переставьте местами строки...

Дана целочисленная прямоугольная матрица
Дана целочисленная прямоугольная матрица. Определить: Сумму модулей элементов, расположенных ниже побочной диагонали. Есть код но...

Дана прямоугольная матрица. Найти:
Найти: номера строк с одинаковым количеством положительных и отрицательных чисел. Желательно через функцию.

Дана целочисленная прямоугольная матрица
Дана целочисленная прямоугольная матрица.Определить: 1)Количество строк,не содержащих ни одного нулевого элемента;Вывести эти строки на...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru