Форум программистов, компьютерный форум CyberForum.ru

Проверка матрицы на симетричность относительно побочной диагонали - C++

Восстановить пароль Регистрация
 
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
06.09.2012, 08:07     Проверка матрицы на симетричность относительно побочной диагонали #1
проверка матрици на симетричность относительно побочной диагонали?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2012, 08:07     Проверка матрицы на симетричность относительно побочной диагонали
Посмотрите здесь:

C++ Разместить на побочной диагонали матрицы суммы элементов, которые лежат на диагоналях, перпендикулярных к побочной.
C++ Зеркальное отражение относительно побочной диагонали
Определить, является ли квадратная матрица симметричной относительно побочной диагонали. C++
Зеркально отразить ее элементы относительно побочной диагонали. C++
Дана матрица 7х7, поменять местами элементы, симметрично относительно побочной диагонали C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nsashans
7 / 7 / 0
Регистрация: 16.07.2012
Сообщений: 56
06.09.2012, 08:12     Проверка матрицы на симетричность относительно побочной диагонали #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
int main(int argc, char argv[]) 
{    
    const int HEIGHT  = 4;
    const int WIDTH = 4;
    int arr [HEIGHT] [WIDTH] =    { {1,1,1,1}, {1,1,1,0}, {1,1,0,0}, {1,0,0,0 } };
    bool flag = true;
    for (int i = 0; i < HEIGHT; ++i)
    {
        for(int j = 0; j < WIDTH; ++j)
            std::cout << arr[i][j] << ' ';
        std::cout << std::endl;
    }
    for (int i = 1; i < HEIGHT - 1; ++i)
        for (int j = i; j < WIDTH -1; ++j)
            if(arr[i][j] != arr[j][i])
                flag = false;
    std::cout << (flag ? "Matrix is symmetric" : "Not symmetric");
    std::cin.get();
    return 0;
}
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
06.09.2012, 08:15  [ТС]     Проверка матрицы на симетричность относительно побочной диагонали #3
а в это задачи не надо делалать ввод с клавиатуры
cmath
Модератор
 Аватар для cmath
2415 / 1634 / 132
Регистрация: 11.08.2012
Сообщений: 3,252
Завершенные тесты: 5
06.09.2012, 08:22     Проверка матрицы на симетричность относительно побочной диагонали #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
float Matrix[Dim][Dim];
//типо заполнили элементами где-то здесь :)
bool symm = true;// если не симметрична, то на выходе станет false
bool br = false;
for(int i = 0; i <= Dim-1; i++)
{
for(int j = Dim-1; j >= 0; j--)
{
 if(Matrix[i][j] != Matrix[j][i])// смысл в том, чтобы начинать движение не из левого, 
{//а из правого верхнего угла
symm = false; 
br = true; 
break;
}
}
if(br)break;
}
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
06.09.2012, 08:24  [ТС]     Проверка матрицы на симетричность относительно побочной диагонали #5
Это правельно
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
#include <iostream>
using namespace std;
const int MAX = 100;
int main() 
{    
    int arr [MAX] [MAX];
    int n, m;
    cout << "M = ";
    cin >> m;
    cout << "N = ";
    cin >> n;
    bool flag = true;
    for (int i = 0; i < m; ++i)
    {
        for(int j = 0; j < n; ++j)
            cout << arr[i][j] << ' ';
            cout << endl;
    }
    for (int i = 1; i < m - 1; ++i)
        for (int j = i; j < n -1; ++j)
            if(arr[i][j] != arr[j][i])
                flag = false;
    cout << (flag ? "Matrix is symmetric" : "Not symmetric");
    system("pause");
    return 0;
}
cmath
Модератор
 Аватар для cmath
2415 / 1634 / 132
Регистрация: 11.08.2012
Сообщений: 3,252
Завершенные тесты: 5
06.09.2012, 08:27     Проверка матрицы на симетричность относительно побочной диагонали #6
Цитата Сообщение от Sylar9 Посмотреть сообщение
for (int i = 1; i < HEIGHT - 1; ++i)
for (int j = i; j < WIDTH -1; ++j)
if(arr[i][j] != arr[j][i])
flag = false;
Вы проверяете относительно главной диагонали, а не побочной
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
06.09.2012, 08:28  [ТС]     Проверка матрицы на симетричность относительно побочной диагонали #7
Цитата Сообщение от Hydrogen Посмотреть сообщение
Вы проверяете относительно главной диагонали, а не побочной
я что то не могу понят что надо ?
cmath
Модератор
 Аватар для cmath
2415 / 1634 / 132
Регистрация: 11.08.2012
Сообщений: 3,252
Завершенные тесты: 5
06.09.2012, 08:30     Проверка матрицы на симетричность относительно побочной диагонали #8
Цитата Сообщение от Sylar9 Посмотреть сообщение
я что то не могу понят что надо ?
Вы движетесь из левого верхнего угла, т.е. по направлению главной диагонали, а надо из верхнего правого. Я выше уже отписал, как это устроить.
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
06.09.2012, 08:31  [ТС]     Проверка матрицы на симетричность относительно побочной диагонали #9
Цитата Сообщение от Hydrogen Посмотреть сообщение
Вы движетесь из левого верхнего угла, т.е. по направлению главной диагонали, а надо из верхнего правого. Я выше уже отписал, как это устроить.
вот это
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
float Matrix[Dim][Dim];
//типо заполнили элементами где-то здесь :)
bool symm = true;// если не симметрична, то на выходе станет false
bool br = false;
for(int i = 0; i <= Dim-1; i++)
{
for(int j = Dim-1; j >= 0; j--)
{
 if(Matrix[i][j] != Matrix[j][i])// смысл в том, чтобы начинать движение не из левого, 
{//а из правого верхнего угла
symm = false; 
br = true; 
break;
}
}
if(br)break;
}
cmath
Модератор
 Аватар для cmath
2415 / 1634 / 132
Регистрация: 11.08.2012
Сообщений: 3,252
Завершенные тесты: 5
06.09.2012, 08:35     Проверка матрицы на симетричность относительно побочной диагонали #10
Цитата Сообщение от Sylar9 Посмотреть сообщение
вот это
Да, это
смотрите на параметры цикла
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
06.09.2012, 08:35  [ТС]     Проверка матрицы на симетричность относительно побочной диагонали #11
Цитата Сообщение от Hydrogen Посмотреть сообщение
Вы проверяете относительно главной диагонали, а не побочной
Вот я доделал код
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
#include <iostream>
using namespace std;
const int MAX = 100;
int main() 
{    
    float Matrix[Dim][Dim];
    int n, m;
    cout << "M = ";
    cin >> m;
    cout << "N = ";
    cin >> n;
    for (int i=0; i<m; i++)
    for(int j=0; j<n; j++)
    {
      cout << "a[" << i << "][" << j << "] = ";
      cin >> Matrix[i][j];
    }
bool symm = true;
bool br = false;
for(int i = 0; i <= MAX-1; i++)
{
for(int j = MAX-1; j >= 0; j--)
{
 if(Matrix[i][j] != Matrix[j][i])
symm = false; 
br = true; 
break;
}
}
if(br)break;
}
правельно?а как сделать ввывод(ответ)
cmath
Модератор
 Аватар для cmath
2415 / 1634 / 132
Регистрация: 11.08.2012
Сообщений: 3,252
Завершенные тесты: 5
06.09.2012, 08:49     Проверка матрицы на симетричность относительно побочной диагонали #12
Цитата Сообщение от Sylar9 Посмотреть сообщение
правельно?а как сделать ввывод(ответ)
Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста

А symm как вы думаете, зачем? Если матрица симметрична, то на выходе из цикла symm = true, в противном случае false. Догадываетесь, на что намекаю?

Добавлено через 1 минуту
Да и еще, вам нужен проверять, является ли матрица квадратной, а то говорить про симметрию здесь просто смешно

Добавлено через 4 минуты
еще кое-что: в вашем коде есть еще ошибки (правда не алгоритмические)
здесь
C++
1
float Matrix[Dim][Dim];
а также здесь
C++
1
i <= MAX-1
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
06.09.2012, 08:51  [ТС]     Проверка матрицы на симетричность относительно побочной диагонали #13
Если не сложно напиши код полностью, очень надо
cmath
Модератор
 Аватар для cmath
2415 / 1634 / 132
Регистрация: 11.08.2012
Сообщений: 3,252
Завершенные тесты: 5
06.09.2012, 08:59     Проверка матрицы на симетричность относительно побочной диагонали #14
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
#include <iostream>
using namespace std;
const int MAX = 100;
int main() 
{    
    float Matrix[MAX][MAX];
    int n, m;
    cout << "M = ";
    cin >> m;
    cout << "N = ";
    cin >> n;
    for (int i=0; i<m; i++)
    for(int j=0; j<n; j++)
    {
      cout << "a[" << i << "][" << j << "] = ";
      cin >> Matrix[i][j];
    }
bool symm = true;
bool br = false;
if(n==m)
{
for(int i = 0; i <= n-1; i++)
{
 for(int j = n-1; j >= 0; j--)
 {
   if(Matrix[i][j] != Matrix[j][i])
   {
   symm = false; 
   br = true; 
   break;
   }
 }
 if(br)break;
}
}
else symm=false;
cout << (symm ? "Matrix is symmetric" : "Not symmetric") << endl;
system("pause");
return 0;
}
p.s. не забудьте проверить на синтаксические ошибки (отсутствие скобок, запятых и т.п.)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2012, 09:00     Проверка матрицы на симетричность относительно побочной диагонали
Еще ссылки по теме:

Определить, является ли заданная квадратная матрица симметричной относительно побочной диагонали C++
Определить, является ли квадратная матрица симметричной относительно побочной диагонали C++
Задана матрица A размерности n x n. Зеркально отразить ее относительно побочной диагонали C++

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

Или воспользуйтесь поиском по форуму:
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
06.09.2012, 09:00  [ТС]     Проверка матрицы на симетричность относительно побочной диагонали #15
огромное спасбо
Yandex
Объявления
06.09.2012, 09:00     Проверка матрицы на симетричность относительно побочной диагонали
Ответ Создать тему
Опции темы

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