0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 3
1

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

28.09.2011, 10:27. Показов 20924. Ответов 83
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1) Нужно написать программу которая будет выводить массив

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

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

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

Пожалуйста помогите, в долгу не останусь!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.09.2011, 10:27
Ответы с готовыми решениями:

Отражение двумерного массива относительно главной диагонали
Помогите пожалуйста, надо отразить заданный двумерный массив относительно главной диагонали.

Транспонирование матрицы относительно побочной диагонали
Здравствуйте уважаемые знатоки. У меня есть код матрицы в С++ #include <stdafx.h> #include...

Транспонирование матрицы относительно главной и побочной диагоналей
Подскажите как, транспонировать значения квадратной матрицы, относительно главной и побочной...

Квадратная матрица, симметричная относительно главной диагонали задана верхним треугольником в виде одномерного массива
квадратная матрица симметричная относительно главной диагонали задана верхним треугольником в виде...

83
-=ЮрА=-
28.09.2011, 12:58     Переворот массива относительно главной диагонали (транспонирование)
  #21

Не по теме:

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

0
Deviaphan
28.09.2011, 13:01
  #22

Не по теме:

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

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

Не по теме:

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

0
Deviaphan
28.09.2011, 13:09
  #24

Не по теме:

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

0
Формучанин
364 / 294 / 42
Регистрация: 02.11.2010
Сообщений: 1,242
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;
}
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*));
- не нужно мне указатели инициализировать, с переменными работай
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
28.09.2011, 13:24 27

Не по теме:

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



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

Не по теме:

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

2
Формучанин
364 / 294 / 42
Регистрация: 02.11.2010
Сообщений: 1,242
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]);
Особо обрати внимание на то, как будут изменятся вычисления программы.
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-е завтра жду от тебя связку клиент-сервер или что нибудь достойное а иначе вообще говорить более с тобой не буду

0
Deviaphan
28.09.2011, 13:40
  #30

Не по теме:

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

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

Не по теме:

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

0
Заблокирован
Автор FAQ
28.09.2011, 13:44 34

Не по теме:

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

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



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

Не по теме:

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

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

Не по теме:

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

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;
}

0
Формучанин
364 / 294 / 42
Регистрация: 02.11.2010
Сообщений: 1,242
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 ?
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 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]);
1
Заблокирован
Автор 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;
}

0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
28.09.2011, 13:57 40

Не по теме:

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



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

Не по теме:

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

0
28.09.2011, 13:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.09.2011, 13:57
Помогаю со студенческими работами здесь

Квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива.Восстановить исходную матрицу
Квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в...

Проверка на симметричность относительно главной диагонали
Дан массив целых чисел размера n x n, элементами которого являются 0 и 1. Проверить, является ли...

Дана квадратная матрица. Произвести транспонирование (переворот) матрицы относительно ее главной диагонали
Дана квадратная матрица. Произвести транспонирование (переворот) матрицы относительно ее главной...

Произвести переворот матрицы относительно ее побочной диагонали
Дана квадратная матрица. Произвести переворот матрицы относительно ее побочной диагонали ....кто...


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

Или воспользуйтесь поиском по форуму:
40
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru