Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 18
1

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

08.02.2014, 17:25. Показов 2824. Ответов 8
Метки нет (Все метки)

Задана матрица A(n,n). Зеркально отразить ее относительно главной
диагонали. В преобразованной матрице найти строки, элементы которой
образуют убывающую или возрастающую последовательность.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.02.2014, 17:25
Ответы с готовыми решениями:

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

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

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

Зеркально отразить заданную квадратную матрицу относительно побочной диагонали
Задана матрица A размерности n x n. Зеркально отразить ее относительно побочной диагонали.

8
22 / 22 / 7
Регистрация: 01.12.2013
Сообщений: 93
08.02.2014, 17:31 2
Колос, ваш вариант кода в студию!
Что не работает?
0
:)
Эксперт С++
4769 / 3263 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
08.02.2014, 17:33 3
Цитата Сообщение от Megabar Посмотреть сообщение
ваш вариант кода в студию!
откуда ему взяться? Еще же никто не написал
0
22 / 22 / 7
Регистрация: 01.12.2013
Сообщений: 93
08.02.2014, 17:37 4
Цитата Сообщение от Tulosba Посмотреть сообщение
откуда ему взяться? Еще же никто не написал

Не по теме:

ну бывает человек торопился и вставить забыл

0
Tulosba
08.02.2014, 17:38
  #5

Не по теме:

Цитата Сообщение от Megabar Посмотреть сообщение
ну бывает человек торопился и вставить забыл
У ТС кол-во тем почти равно кол-ву сообщений. Сделайте соответствующие выводы.

0
Вежливость-главное оружие
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446
08.02.2014, 19:08 6
Лови!

Кликните здесь для просмотра всего текста

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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include "stdafx.h"
#include <iostream>
#include <ctime>
 
using namespace std;
 
int ** matrix_constructor(int w, int h);
 
void matrix_print(int ** matrix, int w, int h);
 
void matrix_fill(int** matrix, int w, int h, bool random_fill);
 
void matrix_destructor(int **matrix, int w);
 
void matrix_reflect(int **matrix, int w, int h);
 
void do_task(int **matrix, int w, int h);
 
 
int main()
{
 
    int n;
    cout<<"Enter matrix size : "; cin>>n;
 
    int **matrix = matrix_constructor(n, n);
    matrix_fill(matrix, n, n, false);
    matrix_print(matrix, n, n);
    matrix_reflect(matrix, n, n);
    matrix_print(matrix, n, n);
    do_task(matrix, n, n);
    matrix_destructor(matrix, n);
 
    getchar();getchar();
    return 0;
} 
 
int ** matrix_constructor(int w, int h)
{
    int ** matrix_new = new int *[w];
 
    for (int i = 0; i < w; ++i)
        matrix_new[i] = new int[h];
 
    return matrix_new;
}
 
void matrix_print(int ** matrix, int w, int h)
{
    cout<<endl<<endl;
    for (int i = 0; i < w; ++i)
    {
        for (int j = 0; j < h; ++j)
            cout << matrix[i][j] << " ";
        cout << endl;
    }
}
 
void matrix_fill(int** matrix, int w, int h, bool random_fill = true)
{
    if(random_fill) 
    {
        srand((unsigned)time(NULL));
        for (int i = 0; i < w; i++)
            for (int j = 0; j < h; j++)
                matrix[i][j] = rand() % 30 + 10;        
    }
    else
    {
        for(int i = 0; i < w; i++)
        {
            for(int j = 0; j < h; j++)
            {
                cout<<"Enter {"<<i<<":"<<j<<"}"<<" element "; cin>>matrix[i][j];
            }
            cout<<endl;
        }
    }
}
 
void matrix_destructor(int **matrix, int w)
{
    for (int i = 0; i < w; i++)
        delete[] matrix[i];
    delete[] matrix;    
}
 
void matrix_reflect(int **matrix, int w, int h)
{
    int buff;
    for (int i = 0; i < w; i++)
        for (int j = 0; j < h; j++)
        {
            buff = matrix[i][j];
            matrix[i][j] = matrix[j][i];
            matrix[j][i] = buff;
        }
}
 
void do_task(int **matrix, int w, int h)
{   
    cout<<endl<<endl;
    for (int i = 0; i < w; i++)
    {
        int flag = 0;//если -1 - убывающя, 1 - возрастающая, 2 - не найдено
        for (int j = 1; j < h; j++)
        {
            if(matrix[i][j] > matrix[i][j - 1] && (flag == 0 || flag == 1) && flag != -1)//возрастающая последовательность
                flag = 1;
            else if(matrix[i][j] < matrix[i][j - 1] && (flag == 0 || flag == -1) && flag != 1)//убывающая
                flag = -1;
            else                
            {
                flag = 2;
                break;
            }
        }               
 
        if(flag != 2)
            if(flag == 1) 
                cout<<"In row "<<i + 1<<" '>'"<<endl;
            else 
                cout<<"In row "<<i + 1<<" '<'"<<endl;
        else 
            cout<<"In row "<<i + 1<<" Not found"<<endl;
    }
}


Зеркально отразить матрицу относительно главной диагонали.
0
Вежливость-главное оружие
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446
08.02.2014, 19:11 7
В метод void matrix_reflect подправь. Нужно так :

C++
1
for (int j = i; j < h; j++)
0
8 / 8 / 3
Регистрация: 30.04.2013
Сообщений: 25
08.02.2014, 19:26 8
Цитата Сообщение от some_name Посмотреть сообщение
В метод void matrix_reflect подправь. Нужно так :
C++
1
for (int j = i; j < h; j++)
А еще лучше так
C++
1
2
for (int i = 0; i < w - 1; i++)
    for (int j = i + 1; j < h; j++)
А еще, т.к диагональ есть только у квадратной матрицы, можно использовать одну переменную для рамера.
0
Вежливость-главное оружие
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446
08.02.2014, 19:29 9
Цитата Сообщение от somebdy Посмотреть сообщение
А еще лучше так
ну да, пару итерации сэкономим
Цитата Сообщение от somebdy Посмотреть сообщение

А еще, т.к диагональ есть только у квадратной матрицы, можно использовать одну переменную для рамера.
да, простосто копипастил код - лень было менять
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.02.2014, 19:29

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

Транспонировать целочисленную матрицу 5х5, т.е. отразить относительно главной диагонали
Транспонировать целочисленную матрицу 5х5, т.е. отразить относительно главной диагонали.

Транспонировать целочисленную матрицу 5х5, т.е. отразить относительно главной диагонали
Транспонировать целочисленную матрицу 5х5, т.е. отразить относительно главной диагонали. ...

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


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

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

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