0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 70

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

14.05.2012, 01:39. Показов 12409. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана квадратная матрица A порядка M. Зеркально отразить ее элементы относительно главной диагонали (при этом элементы главной диагонали останутся на прежнем месте, элемент A1,2 поменяется местами с A2,1, элемент A1,3 — с A3,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
39
40
41
42
43
#include <iostream>
#include <time.h>
#include <stdlib.h>
 
using namespace std;
int main()
{ 
    setlocale(LC_ALL, "");
    srand(time(NULL));
    int m,n;
    cout<<"Введите размер матрицы M: "; cin>>m;
    int **C = new int*[m],i,j;
    cout<<"Исходная матрица равна: "<<endl;
    for (i=0;i<m;i++)
    {
        *(C+i)=new int[m];
        for (j=0;j<m;j++)
        {
            *(*(C+i)+j)=rand()%21;
            cout<<*(*(C+i)+j)<<"\t";
        }
        cout<<endl;
    }
    int x;
    for(i=0; m-1; ++i)
    {
        for(j=0; m-i; ++j)
        {
            x=C[i][j];
            C[i][j]=C[m-j+1][m-i+1];
            C[m-j+1][m-i+1]=x;
        }
    } 
    for(i=1; i<m; ++i)
    {
        for(j=1; j<m; ++j)
        {
            cout<<C[i][j]<<"\t";
        }
        cout<<endl;
    } 
    return 0;
}
При компиляции, завершается окно cmd(
Вот тот же код, только на паскале:
https://www.cyberforum.ru/pascal/thread295229.html
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.05.2012, 01:39
Ответы с готовыми решениями:

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

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

Зеркально отразить элементы матрицы относительно побочной диагонали
Заданная квадратная матрица (n × n). Зеркально отразить ее элементы относительно побочной диагонали const int n = 4; int a; int i,...

9
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
14.05.2012, 01:43
ну программа отрабатывает и все, завершается на этом.
в конце перед return 0; нужно поставить какой-нибудь getch() или system("pause") чтобы программа остановилась и ждала нажатия какой-нибудь кнопки и только после этого нажатия завершалась.
0
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 70
14.05.2012, 01:45  [ТС]
DU, Если бы...она просто завершается, выводит исходную матрицу, думает, и потом завершается!
0
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 70
14.05.2012, 01:46  [ТС]
Вот скрин:
Миниатюры
Зеркально отразить элементы матрицы относительно главной диагонали  
0
157 / 157 / 27
Регистрация: 29.03.2012
Сообщений: 418
14.05.2012, 01:54
здесь явно что-то упустили в условии циклов =)
C++
1
2
3
4
5
6
for(i=0; m-1; ++i)  
   {       
  for(j=0; m-i; ++j)     
    {             x=C[i][j];        
     C[i][j]=C[m-j+1][m-i+1];       
      C[m-j+1][m-i+1]=x;         }
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
14.05.2012, 01:55
ну да. там при первой итерации идет выход за пределы массива С[m-0+1][m-0+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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <time.h>
#include <stdlib.h>
 
using namespace std;
int main()
{ 
    setlocale(LC_ALL, "");
    srand(time(NULL));
    int m = 3;
    //cout<<"Введите размер матрицы M: "; cin>>m;
 
    int **C = new int*[m],i,j;
    cout<<"Исходная матрица равна: "<<endl;
    for (i=0;i<m;i++)
    {
        *(C+i)=new int[m];
        for (j=0;j<m;j++)
        {
            *(*(C+i)+j)=rand()%21;
            cout<<*(*(C+i)+j)<<"\t";
        }
        cout<<endl;
    }
 
    // тут првда диагональные элементы тоже как бы отображаются. если хочется оптимизировать
    // то проход нужно долеть от второго до последнего в первом цикле и от нуля до i-1 во втором.
    for(i=0; i < m; ++i)
    {
        for(j=0; j < i; ++j)
        {
            const int x=C[i][j];
            C[i][j]=C[j][i];
            C[j][i]=x;
        }
    }
     /*
    // вот так:
    for(i=1; i < m; ++i)
    {
        for(j=0; j < i-1; ++j)
        {
            const int x=C[i][j];
            C[i][j]=C[j][i];
            C[j][i]=x;
        }
    }
    */
    
 
    cout << "!!!!!!!!!!!" << endl;
    for(i=0; i<m; ++i)
    {
        for(j=0; j<m; ++j)
        {
            cout<<C[i][j]<<"\t";
        }
        cout<<endl;
    } 
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 70
14.05.2012, 02:05  [ТС]
да, но теперь в другом проблема, вот скрин:
Миниатюры
Зеркально отразить элементы матрицы относительно главной диагонали  
0
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 70
14.05.2012, 02:07  [ТС]
DU, Спасибо, разобрался!
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
14.05.2012, 02:09
ну если вы оставили свой последний цикл вывода то понятно. я и его исправил тоже.
C++
1
2
3
4
5
6
7
8
9
    // вот это выводит матрицу на еденицу меньшую по ширине и высоте. гляньте в мой код
    for(i=1; i<m; ++i)
    {
        for(j=1; j<m; ++j)
        {
            cout<<C[i][j]<<"\t";
        }
        cout<<endl;
    }
0
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 70
14.05.2012, 02:24  [ТС]
DU, да, а мне как раз нужно, что бы и диагональные элементы были видны, т.к. нагляднее получается!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.05.2012, 02:24
Помогаю со студенческими работами здесь

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

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

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

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

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


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

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

Новые блоги и статьи
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
Конвейеры ETL с Apache Airflow и Python
AI_Generated 13.05.2025
ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . .
Выполнение асинхронных задач в Python с asyncio
py-thonny 12.05.2025
Современный мир программирования похож на оживлённый мегаполис – тысячи процессов одновременно требуют внимания, ресурсов и времени. В этих джунглях операций возникают ситуации, когда программа. . .
Работа с gRPC сервисами на C#
UnmanagedCoder 12.05.2025
gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru