Форум программистов, компьютерный форум 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++ Является ли матрица симетричной относительно главной диагонали?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
28.09.2011, 12:58     Переворот массива относительно главной диагонали (транспонирование)
  #21

Не по теме:

Цитата Сообщение от Deviaphan Посмотреть сообщение
Ни разу TCIP аббревиатуры не встречал. Видимо это то же, что-то из недокументированного...
- TCP I нет(случайно пробилась), а то ещё в гугле не найдёшьДавай давай ищи и с датой здачи проекта давай определимся предлагаю завтра выложить готового клиента и сервер, пусть будет консоль куда нужно вбить порт и айпишник а затем уж печатать текст(передачу файлов даже не прошу делать)

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
28.09.2011, 13:01
  #22

Не по теме:

Ага, конечно. Я прям клиент-серверное приложение ринулся писать.
Сперва вникни в суть мироздания, что arr != &arr[0][0].

-=ЮрА=-
28.09.2011, 13:06
  #23

Не по теме:

Deviaphan, я тебя вызвал, завтра выложу приложения сервера и клиента(на досуге хоть посмотришь что это), а как подростёшь как программер тогда зарывайся...На сим больше офтопить не желаю!

Deviaphan
28.09.2011, 13:09
  #24

Не по теме:

Круто, спасибо!
Но ты, всё таки, на досуге подумай, о чём я тебе написал про arr != &arr[0][0]. Будешь приятно удивлён.

nxnx
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,226
28.09.2011, 13:14     Переворот массива относительно главной диагонали (транспонирование) #25
-=ЮрА=-,
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
    
    float** x=(float**)malloc(10*sizeof(float*));
   
    memset(x,1,10*sizeof(float*));
    printf("%p==%p\n",x,&x[0][0]); 
    
    return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
28.09.2011, 13:20     Переворот массива относительно главной диагонали (транспонирование) #26

Не по теме:

Deviaphan, arr - область памяти, указатель на начало этой области &arr[0][0], если нужно указатели на строки пожалусто
for(int i = 0; i < m; i++)
ptr = &arr[i];
Если в ходе программы начальный адрес области не изменяется то(для данного случая)утечки памяти нет - будет лишь изменяться размер области...



Добавлено через 2 минуты
nxnx, для тебя это
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
    
    float* x=(float*)malloc(10*sizeof(float));
   
    memset(x,1,10*sizeof(float));
    printf("%p==%p\n",x,&x[0]); 
    
    return 0;
}


Добавлено через 35 секунд
Цитата Сообщение от nxnx Посмотреть сообщение
memset(x,1,10*sizeof(float*));
- не нужно мне указатели инициализировать, с переменными работай
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
28.09.2011, 13:24     Переворот массива относительно главной диагонали (транспонирование) #27

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Если в ходе программы начальный адрес области не изменяется то(для данного случая)утечки памяти нет - будет лишь изменяться размер области...
Это ты так думаешь, потому что сравниваешь адреса неинициализированной памяти, которая в дебаге заполняется 0xCDCDCDCD. Но кто я такой, что бы Великий меня слушал...



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

Не по теме:

ПыСя: Многомерный статический и многомерный динамический массивы в памяти представлены сильно по разному.

nxnx
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,226
28.09.2011, 13:36     Переворот массива относительно главной диагонали (транспонирование) #28
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- не нужно мне указатели инициализировать, с переменными работай
я не то хотел сказать. Вот код:
C
1
2
 arr = (float **)malloc(m*sizeof(float *));
                printf("pointer to arr : 0x%p\r\n",&arr[0][0]);
постами выше тебе пытаются сказать что arr и &arr[0][0] это не одно и тоже.
При выделении памяти, по адресу arr может быть любой мусор(у меня этот мусор в виде еденичек).
Попробуй кстати в своём коде:
C
1
2
3
 arr = (float **)malloc(m*sizeof(float *));
memset(arr,0,m*sizeof(float *));
                printf("pointer to arr : 0x%p\r\n",&arr[0][0]);
Особо обрати внимание на то, как будут изменятся вычисления программы.
-=ЮрА=-
28.09.2011, 13:39
  #29

Не по теме:

[b]Deviaphan[/bдавай от всего отстранимся,
1-е по топику ТС ты ни строчки не представил - это раз
2-е хочешь мне что то доказать компилируй в Release сие

Код на Си
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
    
    float ** x=(float **)malloc(10*sizeof(float *));
    for(int i = 0; i < 10; i++)
    {
        x[i] = (float *)malloc(10*sizeof(float));
        memset(x[i],1,10*sizeof(float));
    }
    printf("%p==%p\n",x,&x[0][0]); 
    
    return 0;
}
- а то мякго сказать достал!
3-е завтра жду от тебя связку клиент-сервер или что нибудь достойное а иначе вообще говорить более с тобой не буду

Deviaphan
28.09.2011, 13:40
  #30

Не по теме:

Цитата Сообщение от nxnx Посмотреть сообщение
Особо обрати внимание на то, как будут изменятся вычисления программы
Он на такие мелочи сейчас отвлекаться не может, сейчас нужно меня на место поставить.
Кстати, если не сложно, то пусть сервер не по "127,0,0,1" адресу будет, чтобы я получше разобрался. А то все примеры на локальном компе крутят, без авторизаций, паролей... бесполезно в общем...

-=ЮрА=-
Заблокирован
Автор FAQ
28.09.2011, 13:40     Переворот массива относительно главной диагонали (транспонирование) #31
nxnx, тебе тоже сюда полезно посмотреть
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
2-е хочешь мне что то доказать компилируй в Release сие
Код на Си - а то мякго сказать достал!
nxnx
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,226
28.09.2011, 13:40     Переворот массива относительно главной диагонали (транспонирование) #32
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
nxnx, для тебя это
речь идёт о двумерном массиве, а не о одномерном.
Deviaphan
28.09.2011, 13:43
  #33

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
2-е хочешь мне что то доказать компилируй в Release сие
Ну не может адрес одного массива совпадать с адресом ДРУГОГО массива. Если они у тебя совпадают, выкинь свой компилятор на помойку.

-=ЮрА=-
Заблокирован
Автор FAQ
28.09.2011, 13:44     Переворот массива относительно главной диагонали (транспонирование) #34

Не по теме:

Deviaphan, сервер как раз сетевой будут нужны машины удалённые связанные интернетом
на счёт сего не беспокойся

Цитата Сообщение от Deviaphan Посмотреть сообщение
"127,0,0,1"
, вобъёшь на другой машине айпишник своего сервака и порт и будешь слать месаги, сервер всё продублирует, посадишь своего друга за него пусть читаетПосле это или отпади в топиках или возьми на заметку что ты не такой уж и эксперт во всё + скомпилируй мой 2-й пост, да завтра...



Добавлено через 1 минуту
Цитата Сообщение от nxnx Посмотреть сообщение
речь идёт о двумерном массиве, а не о одномерном.
- чувак я уже сказад для тебя это
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
2-е хочешь мне что то доказать компилируй в Release сие
Код на Си - а то мякго сказать достал!
, Ты сам некоректину прислал, ну так вот смотри
Deviaphan
28.09.2011, 13:46
  #35

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
будут нужны машины удалённые связанные интернетом
Спасибо. Как раз хотел про сетевое программирование почитать, будет с чем играться.
Но ты всё таки подумай что (не может адрес одного массива совпадать с адресом ДРУГОГО массива)

-=ЮрА=-
28.09.2011, 13:46
  #36

Не по теме:

nxnx, это что по твоему 1д массив???

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
    
    float ** x=(float **)malloc(10*sizeof(float *));
        for(int i = 0; i < 10; i++)
        {
                x[i] = (float *)malloc(10*sizeof(float));
                memset(x[i],1,10*sizeof(float));
        }
    printf("%p==%p\n",x,&x[0][0]); 
    
    return 0;
}

nxnx
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,226
28.09.2011, 13:49     Переворот массива относительно главной диагонали (транспонирование) #37
C
1
2
arr = (float **)malloc(m*sizeof(float *));
printf("pointer to arr : 0x%p\r\n",&arr[0][0]);
чей адрес напечатает printf ?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
28.09.2011, 13:50     Переворот массива относительно главной диагонали (транспонирование) #38
Цитата Сообщение от nxnx Посмотреть сообщение
чей адрес напечатает printf ?
И, как дополнение
C
1
printf("pointer to arr : 0x%p\r\n", arr[0]);
-=ЮрА=-
Заблокирован
Автор FAQ
28.09.2011, 13:54     Переворот массива относительно главной диагонали (транспонирование) #39

Не по теме:

Deviaphan, я понимаю что для изменения нужен realloc просто недавно открыл для себя что если многократно алокать в цикле а указатель идёт до него(а лучше чтобы глобальным был), то адрес начала блока const и не меняется от алока к алоку, я пока сам разбираюсь с этим, всё таки думаю в рамках уровня ТС мой самый первый пост нормально подходил, а вот дальше глубокие материи пошли, ему (ТС) не нужныеДавай уже завтра снова встретимся в этом топике?



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

Не по теме:

nxnx, я тебе привёл готовый код что тебе ещё надо то???Притом адрес после работы с массивом печатаю, ты хоть компилировал???

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
float ** x=(float **)malloc(10*sizeof(float *));
* * * * for(int i = 0; i < 10; i++)
* * * * {
* * * * * * * * x[i] = (float *)malloc(10*sizeof(float));
* * * * * * * * memset(x[i],1,10*sizeof(float));
* * * * }
* * printf("%p==%p\n",x,&x[0][0]);
return 0;
}

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

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

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

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
28.09.2011, 13:57     Переворот массива относительно главной диагонали (транспонирование) #40

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
недавно открыл для себя
Если у тебя ЭТО действительно ТАК, умоляю, выкинь этот НЕКОРРЕКТНО РАБОТАЮЩИЙ компилятор.
Есть документиррованное поведение этой функции, если она работает иначе - это косяк.



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

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
nxnx, я тебе привёл готовый код что тебе ещё надо то???
Вот ты не поверишь. Адреса РАЗНЫЕ, как и должно быть. Причём, у тебя код не на Си, а на С++. Нельзя внутри for переменную определять, Сишный компилятор жалуется.

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

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