-6 / 0 / 1
Регистрация: 18.11.2016
Сообщений: 13
1

Зеркально отразить элементы матрицы относительно главной диагонали используя указатели

18.11.2016, 18:06. Показов 4163. Ответов 5
Метки нет (Все метки)

Помогите решить эту задачу с помощью указателей. Ниже приведен решение без указателей. Попробовал понять в интернете, все без толку

Дана квадратная матрица AA порядка MM. Зеркально отразить ее элементы относительно главной диагонали (при этом элементы главной диагонали останутся на прежнем месте, элемент A1,2A1,2 поменяется местами с A2,1A2,1, элемент A1,3A1,3 — с A3,1A3,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
#include <conio.h>
#include <iostream>
#include <cstdlib>
 
using namespace std;
int main(){
    
    int a[4][4];
    for (int i=0; i<4; i++)
        for (int j=0; j<=i; j++)
            
            a[i][j] = rand()%100;
    for (int i=0; i<4; i++)
        for (int j=3; j>i; j--)
        
            
            a[i][j] = a[j][i];      
            
            
    for (int i=0; i<4; i++)
        {
        for (int j=0; j<4; j++) 
        cout << "\t " << a[i][j];
        cout << endl;
}
    
    
    _getch();
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2016, 18:06
Ответы с готовыми решениями:

Зеркально отразить элементы матрицы относительно главной диагонали
Дана квадратная матрица A порядка M. Зеркально отразить ее элементы относительно главной диагонали...

Зеркально отразить элементы матрицы относительно побочной диагонали
Заданная квадратная матрица (n × n). Зеркально отразить ее элементы относительно побочной диагонали...

Зеркально отразить элементы матрицы относительно побочной диагонали
Дана квадратная матрица NxN, состоящая из натуральных чисел.Зеркально отразить ее элементи...

Зеркально отразить матрицу относительно главной диагонали и найти строки, элементы которой образуют последовательность
Задана матрица A(n,n). Зеркально отразить ее относительно главной диагонали. В преобразованной...

5
Модератор
Эксперт С++
12771 / 10227 / 6148
Регистрация: 18.12.2011
Сообщений: 27,392
18.11.2016, 18:26 2
Лучший ответ Сообщение было отмечено Almas Alonce как решение

Решение

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
#include <iostream>
#include <cstdlib>
using namespace std; 
int main()
{
    int a[4][4];
    int *pa=&a[0][0];
    for (int* p=pa; p<pa+16; ++p)
      *p = rand()%100;
    for (int i=0; i<4; i++)
    {
        for (int j=0; j<4; j++) 
        cout << "\t " << *(pa+i*4+j);
        cout << endl;
    }
    for (int i=0; i<4; i++)
      for (int j=3; j>i; j--)
        *(pa+i*4+j) = *(pa+j*4+i);      
    cout << endl;
    for (int i=0; i<4; i++)
    {
        for (int j=0; j<4; j++) 
        cout << "\t " << *(pa+i*4+j);
        cout << endl;
    }
    system("pause");
    return 0;
}
1
-6 / 0 / 1
Регистрация: 18.11.2016
Сообщений: 13
18.11.2016, 19:05  [ТС] 3
(pa+i*4+j)
можете объяснить что значит эта надпись?
0
Модератор
Эксперт С++
12771 / 10227 / 6148
Регистрация: 18.12.2011
Сообщений: 27,392
18.11.2016, 19:10 4
То же самое, что и &a[i][j].
pa - Это адрес самого первого элемента массива.
Далее массив можно считать одномерным, в котором сроки расположены подряд,
начало каждой строки имеет адрес (pa+i*4), прибавляем j и получаем адрес нужного элемента
1
Модератор
Эксперт CЭксперт С++
5108 / 2293 / 333
Регистрация: 20.02.2013
Сообщений: 5,648
Записей в блоге: 19
18.11.2016, 19:11 5
Цитата Сообщение от Almas Alonce Посмотреть сообщение
что значит эта надпись?
Читаем любую книгу для новичков, главы про арифметику указателей.

Например:
Стивен Прата "Язык программирования С++. Лекции и упражнения" (2012, 6-е издание), глава 6 "Составные типы", подраздел "Указатели, массивы и арифметика указателей", страница 179
0
-6 / 0 / 1
Регистрация: 18.11.2016
Сообщений: 13
18.11.2016, 19:19  [ТС] 6
Спасибо большое!!!!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2016, 19:19
Помогаю со студенческими работами здесь

Зеркально отразить матрицу относительно главной диагонали.
Задана матрица A(n,n). Зеркально отразить ее относительно главной диагонали. В преобразованной...

Отразить элементы матрицы симметрично относительно главной диагонали
Сформировать квадратный массив целых чисел размерности nxn, где n&lt;10 – вводится с клавиатуры,...

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

Транспонировать матрицу и зеркально отразить ее элементы относительно побочной диагонали
Сначала транспонировать квадратный целочисленный массив matrix, а затем его элементы отразить...


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

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

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