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

Переворот массива относительно главной диагонали (транспонирование) - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 69, средняя оценка - 4.68
b1ood
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 3
28.09.2011, 10:27     Переворот массива относительно главной диагонали (транспонирование) #1
1) Нужно написать программу которая будет выводить массив

int m[M][N]={...};

Вывести массив на экран и затем переворот массива относительно главной диагонали (транспонирование).

2) Все тоже самое как в первом только значения N и М вводятся с клавиатуры.
3) Все тоже самое как в первом только теперь создать функцию
Void displayMatrix (int**m, int N, int M);

Пожалуйста помогите, в долгу не останусь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2011, 10:27     Переворот массива относительно главной диагонали (транспонирование)
Посмотрите здесь:

C++ Транспонирование матрицы относительно главной и побочной диагоналей
C++ Функции: поменять элементы относительно главной диагонали
C++ Является ли матрица симметричной относительно главной диагонали (templates)
Отражение двумерного массива относительно главной диагонали C++
C++ Является ли матрица симетричной относительно главной диагонали?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
28.09.2011, 17:26     Переворот массива относительно главной диагонали (транспонирование) #61
Цитата Сообщение от alkagolik Посмотреть сообщение
любой n мерный массив в машине преобразуется в одномерный. это факт.
Нет. Ведь речь о динамическом массиве, массиве массивов, который принципиально невозможно преобразовать в одномерный - типы не совпадают.

Добавлено через 1 минуту
Это то же самое, что говорить, что vector<vector<int> > преобразуется в vector<int>.

Добавлено через 56 секунд
Или vector<int> a[N] преобразовывается в int a[N*XXX];

Добавлено через 1 минуту
И как при компиляции сделать преобразования, данные для которых получаются в runtime?

Добавлено через 3 минуты
Цитата Сообщение от alkagolik Посмотреть сообщение
или я ошибаюсь?
Мне надоело. Вот. http://codepad.org/Csmr4FAE
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
28.09.2011, 17:27     Переворот массива относительно главной диагонали (транспонирование) #62
Цитата Сообщение от Deviaphan Посмотреть сообщение
Ведь речь о динамическом массиве, массиве массивов, который принципиально невозможно преобразовать в одномерный - типы не совпадают
немного подробней можно?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
28.09.2011, 17:30     Переворот массива относительно главной диагонали (транспонирование) #63
У кого равенство выполняется, отформатируйте винт и идите учитесь на штукатуров.

Добавлено через 2 минуты
Цитата Сообщение от alkagolik Посмотреть сообщение
немного подробней можно?
У массива тип int. У массива указателей тип int*. Как видишь, это разные типы.
У динамического массива, тип int* (указатель на массив == указатель на переменную). У динамического массива указателей тип int** (указатель на массив указателей == указатель на указатель). Как видишь, это разные типы.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
28.09.2011, 17:44     Переворот массива относительно главной диагонали (транспонирование) #64
ну да я понял. шутка юмора:
C
1
2
3
4
5
6
7
8
9
10
11
arr = (int**) malloc(N * sizeof(int*));
 
    for (i = 0; i != N; ++i)
        arr[i] = (int*) malloc(M * sizeof(int));
    
    tmp = M;
    for (i = 0; i != N; ++i){
        for (k = 0; k != tmp; ++k)
            arr[i][k] = rand() % 10;
        --tmp;
    }
вывод
Код
введите количество строк
8
введите количество столбцов
8

исходная матрица
 3 4 8 0 9 1 4 7
 4 3 3 6 7 0 5
 4 7 3 1 9 9
 3 7 9 1 6
 2 3 1 4
 9 4 0
 7 6
 0

транспонированная матрица
 3 4 4 3 2 9 7 0
 4 3 7 7 3 4 6
 8 3 3 9 1 0
 0 6 1 1 4
 9 7 9 6
 1 0 9
 4 5
 7
nxnx
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,226
28.09.2011, 17:53     Переворот массива относительно главной диагонали (транспонирование) #65
Цитата Сообщение от alkagolik Посмотреть сообщение
двумерный массив arr[N][M]
arr это указатель(если быть точным, то указатель на указатель на float), который занимает в памяти 4 или 8 байт(В зависимости от архитектуры).
(по мнению компилятора)
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
28.09.2011, 18:07     Переворот массива относительно главной диагонали (транспонирование) #66
для квадратных матриц
сорц
C
1
2
3
4
5
6
7
8
9
printf("\nисходная матрица\n");
    for(i = 0; i < N; ++i){
        for(k = 0; k < M; ++k){
            if (i == k) printf("     %d    ", arr[i][k]);
            else if ((i + k) == M - 1) printf("     %d    ", arr[i][k]);
            else printf(" %d", arr[i][k]);
        }
        printf("\n");
    }

вывод
Код
введите количество строк
8
введите количество столбцов
8

исходная матрица
     0     1 0 0 1 1 0     0    
 0     0     1 1 1 0     0     0
 0 0     1     0 1     1     0 1
 1 1 1     1         0     0 0 0
 1 0 1     1         1     1 1 1
 0 1     0     1 1     1     1 1
 1     1     1 0 0 1     1     0
     0     0 1 0 0 1 1     0    

транспонированная матрица
     0     0 0 1 1 0 1     0    
 1     0     0 1 0 1     1     0
 0 1     1     1 1     0     1 1
 0 1 0     1         1     1 0 0
 1 1 1     0         1     1 0 0
 1 0     1     0 1     1     1 1
 0     0     0 0 1 1     1     1
     0     0 1 0 1 1 0     0
-=ЮрА=-
Заблокирован
Автор FAQ
28.09.2011, 19:26     Переворот массива относительно главной диагонали (транспонирование) #67
Deviaphan, как и обещал сетевой TCP сервер и клиент. Написал в понятной тебе консоли поэтому для задействования русского в сервере выставь шрифт Lusinda Console (там использовал SetConsoleOutputCP). При запуске клиента вылезут две строки конфига вбивай айпишник той машины на котором запущен сервер и порт сервака, порт вводить только 44356, решил убрать выбор порта в самом сервере, а 44356 более менее не заюзаный порт так что как выбрал так и выбрал. Клиентов может біть несколько и на разных машинах!Тестируй и удач в написании детских програмок

Не по теме:

PS:Жду чего нибудь пристойного от тебя...

Миниатюры
Переворот массива относительно главной диагонали (транспонирование)   Переворот массива относительно главной диагонали (транспонирование)  
Вложения
Тип файла: rar TCPClient.exe.rar (14.6 Кб, 13 просмотров)
Тип файла: rar TCPServer.exe.rar (23.4 Кб, 11 просмотров)
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
28.09.2011, 19:49     Переворот массива относительно главной диагонали (транспонирование) #68

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Евгений М., а вы сами можите описать матсмысл транспонирования не квадратной матрицы?
Что такое математический смысл? Пока выражение "матсмысл транспонирования не квадратной матрицы" я понимаю как "определение транспонированной матрицы".



Добавлено через 46 секунд

Не по теме:

Народ, просьба мерится "У кого длиннее" в другой теме.

-=ЮрА=-
Заблокирован
Автор FAQ
28.09.2011, 22:38     Переворот массива относительно главной диагонали (транспонирование) #69
b1ood, вот ответ на 1-е (статический массив)
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
#include <stdio.h>
#include <conio.h>
 
int main()
{
    //статический массив
    double arr [][5] = //сколько хотим строк и 5 столбцов
    {
        {1.2,2.2,3.3,4.4,5.5},
        {0,1,2,3,4},
        {-3,0,5,6.4,1},
        {-3,0,5,6.4,1},
        {0,0,0,0,1}
    };
    double buf;
    //Узнаём число строк
    unsigned long i,j,m = sizeof(arr)/sizeof(arr[0][0]);//Так можно опрделять число элементов в стат массивах
    m /= 5;//Столбцов 5 значит число строк число элементов/5
    for(i = 0; i < m; i++,printf("\r\n"))
    for(j = 0; j < 5; j++)
        printf("%.f ",arr[i][j]);
    printf("\tTransponed array\r\n");
    //Транспонирование
     for(i = 0; i < m; i++,printf("\r\n"))
     for(j = 0; j < m; j++)
     {
         if(i < m/2)
         {
             buf = arr[i][j];
             arr[i][j] = arr[j][i];
             arr[j][i] = buf;
         }
         printf("%.f ",arr[i][j]);
     }
     printf("Press any key to continue\r\n");
     getch();
     return 0;
}
1 2 3 4 6
0 1 2 3 4
-3 0 5 6 1
-3 0 5 6 1
0 0 0 0 1
Transponed array
1 0 -3 -3 0
0 1 0 0 0
3 2 5 6 1
4 3 5 6 1
6 4 0 0 1
Press any key to continue
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.09.2011, 07:43     Переворот массива относительно главной диагонали (транспонирование) #70
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Deviaphan, как и обещал сетевой TCP сервер и клиент. Написал в понятной тебе консоли поэтому для задействования русского в сервере выставь шрифт Lusinda Console (там использовал SetConsoleOutputCP). При запуске клиента вылезут две строки конфига вбивай айпишник той машины на котором запущен сервер и порт сервака, порт вводить только 44356, решил убрать выбор порта в самом сервере, а 44356 более менее не заюзаный порт так что как выбрал так и выбрал. Клиентов может біть несколько и на разных машинах!Тестируй и удач в написании детских програмок

Не по теме:

PS:Жду чего нибудь пристойного от тебя...

баттл был по МФС, так что пиши уж на МФС. Во вторых, ты уже использовал этот или аналогичный код в одной из тем, а копипаста из загашника не подходит под определение баттла. Ладно, пофиг, ты меня опять грациозно уделал.
Подведем итоги баттла:
факт 1: Я поленился нагуглить код клиент-серверного приложения. Я ленивая бяка.
факт 2: Ты не понимаешь, как выделяется память для многомерных массивов. Не пнимаешь, как оги представлены в памяти. Твой компилятор поддерживает тебя в этом благом начинании и работает не корректно (я не думаю, что это так, но почему я должен сомневаться в твоей честности). Ты не понимаешь, почему твои некоректно написаные программы выдают правильные результаты ( ответ вида - но ведь результат правильный - это не ответ, а просто совпадение), поэтому считаешь их правильными даже после того, как тебе многократно указали на ошибку.
Итого: голосование по поводу того, кто из нас больший неудачнег считаю открытым.
-=ЮрА=-
29.09.2011, 09:23
  #71

Не по теме:

Цитата Сообщение от Deviaphan Посмотреть сообщение
Я поленился нагуглить код клиент-серверного приложения.
- ну нагугли умник(кода с сеткой там нет), хоть бы екзешник выложил, если это так как ты сказал можно нагуглить!Хочешь MFC иди напиши авифреймс о котором постил, не хватало ещё на тебя время тратить интрфейс писать и прочее, достаточно даже того что в твоём клиенте конфиг есть, ну да ладно я же нагуглил всё

Цитата Сообщение от Deviaphan Посмотреть сообщение
Ты не понимаешь, как выделяется память для многомерных массивов. Не пнимаешь, как оги представлены в памяти.
- оставь свои ты не понимаешь

Цитата Сообщение от Deviaphan Посмотреть сообщение
поэтому считаешь их правильными даже после того, как тебе многократно указали на ошибку.
- приводи ексепщины ероры а потом пиши об ошибках, да уж твои знания всеобъемлющи, въедь в мой код сначала полностью а не с
того примитива знаний которым обладаешь. Ладно кроме блеяния я ничего не услышал.
Давай гугли сетевой сервер клиент, жду...

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

Deviaphan
29.09.2011, 10:23
  #72

Не по теме:

"Это ты в жизни такой крутой, а вот встретить бы тебя в сети!"
.)))

Юра, если ты не понимаешь, как работают элементарные вещи, то более сложные программы у тебя работают по несчастливой случайности.
И, между прочим, я пузырьковую сортировку могу реализовать, не заглядывая в гугл, а ты говоришь, что я ничего не знаю.
А ты прикольный. Как до компа доберусь, в друзья тебя добавлю.)

-=ЮрА=-
29.09.2011, 10:41
  #73

Не по теме:

Deviaphan, если бы ты пообещал больше никогда не заходить на форум после того как напишу TCP MFC сервер клиент, я бы с радостью до конца дня их написал
На счёт MFC повтори хотябы это(PS - для пользования exe необходим компьютер и 32-XP на борту)

Цитата Сообщение от Deviaphan Посмотреть сообщение
Как до компа доберусь, в друзья тебя добавлю.)
- избавь меня от этого, тут готов даже умолять чтобы этого не делал

-=ЮрА=-
29.09.2011, 10:52
  #74

Не по теме:

Цитата Сообщение от Deviaphan Посмотреть сообщение
не заглядывая в гугл, а ты говоришь, что я ничего не знаю.
- я не пишу изо дня в день програмки для сортировки массивов не понятно даже зачем, если спутал два алгоритма сортировки мне достаточно прямой вставки для сортировки,
а вот что касается чего-то сложного ты в кусты и как тут после такого в серьёз тебя воспринимать

Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.09.2011, 11:12     Переворот массива относительно главной диагонали (транспонирование) #75
Холи-вар, холи-вар!
А как воспринимать всерьез тебя, если ты не понимаешь, как создаешь многомерные массивы? И даже компилятор свой хакнул, чтобы он как и ты, неправильно, работал!

Ладно, уговорил. Не ббуду в друзья добавлять, я все равно еще эту функцию не нашел в меню.)
ПыСы: Не могу экзешник запустить, у меня ARM.(

Добавлено через 5 минут

Не по теме:

Уаааааау! Выдвигалка СиДирома, ты мега крут!
У Доктора (извиняюсь, забыл имя) в ФАКе есть решение.)

Перечислил процессы системы! Уааааауу, ты ультрамегакрут!
А третью прогу я по названию не угадал.

Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.09.2011, 11:18     Переворот массива относительно главной диагонали (транспонирование) #76
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
а вы сами можите описать матсмысл транспонирования не квадратной матрицы?
Не пойму почему такое простое понятие, как транспонирование матрицы, вызывает сложности. Эта операция определена для любой матрицы. Смысл, да хотя бы в определения ранга матрицы. Есть теорема, что ранг системы строк совпадает с рангом системы столбцов и совпадает с рангом матрицы. Поэтому можно приводить к ступенчатому виду исходную матрицу, либо транспонированную, ранг матрицы от этого не изменится.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
29.09.2011, 13:03     Переворот массива относительно главной диагонали (транспонирование) #77
Цитата Сообщение от Deviaphan Посмотреть сообщение
И даже компилятор свой хакнул, чтобы он как и ты, неправильно, работал!
не вру, хохотал как ненормальный. пацаны хватит ерундой заниматься, переход на личности стирает объективность. бедный ТС, всего лишь попросил задачки решить. ржунимагу
-=ЮрА=-
Заблокирован
Автор FAQ
29.09.2011, 13:06     Переворот массива относительно главной диагонали (транспонирование) #78

Не по теме:

Цитата Сообщение от Deviaphan Посмотреть сообщение
А третью прогу я по названию не угадал.
- возьми запусти выбери графический файл (можно и гиф анимацию) и наслаждайся его видом вместо скучного фона папки, та что тебе говорить

Цитата Сообщение от Deviaphan Посмотреть сообщение
Перечислил процессы системы!
- де..л прости господи! важно не то что перечислил, а то что для этого использовал ты хоть слышал про HKEY_PERFORMANCE???

Цитата Сообщение от Deviaphan Посмотреть сообщение
У Доктора (извиняюсь, забыл имя) в ФАКе есть решение.)
- ну ну сделай чтобы трэй был и все сиди-лотки выдвигались/задвигались, блин сейчас допаяю смпт майлер и выложу как пример к которому должен твой EasyMail стремиться

От себя представь проеты аналогичной функциональности!Флудер



Добавлено через 1 минуту
Цитата Сообщение от alkagolik Посмотреть сообщение
бедный ТС, всего лишь попросил задачки решить. ржунимагу
- он вчера во первых поблагодарил меня здесь в топике второе получил ответ на все вопросы

Не по теме:

Я сказал Deviaphan, тебя сейчас уделаю в EasyMail, только отвечать не буду что у тебя там не так, но не так там есть



Добавлено через 1 минуту
Deviaphan, чё ты молчишь давай в студию хоть 1 проект!
Deviaphan
29.09.2011, 13:12
  #79

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
но не так там есть
Я знаю, иначе бы не просил в теме помощи.(

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
чё ты молчишь давай в студию хоть 1 проект!
Кажется, я уже давно ответил, что кроме пузырьковой сортировки ни одной программы не написал.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2011, 13:17     Переворот массива относительно главной диагонали (транспонирование)
Еще ссылки по теме:

Квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива.Восстановить исходную матрицу C++
Массивы. Отобразить матрицу симметрично относительно главной диагонали C++
Зеркально отразить матрицу относительно главной диагонали. C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
29.09.2011, 13:17     Переворот массива относительно главной диагонали (транспонирование)
  #80

Не по теме:

Цитата Сообщение от Deviaphan Посмотреть сообщение
Кажется, я уже давно ответил, что кроме пузырьковой сортировки ни одной программы не написал.

PS:Ладно я выложу потом екзешник почтовика...

Yandex
Объявления
29.09.2011, 13:17     Переворот массива относительно главной диагонали (транспонирование)
Закрытая тема Создать тему
Опции темы

Текущее время: 17:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru