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

Проверка симметричности матрицы - C++

Восстановить пароль Регистрация
 
niikiita
3 / 3 / 0
Регистрация: 29.05.2013
Сообщений: 223
02.12.2013, 12:11     Проверка симметричности матрицы #1
Добрый день! Подскажите пожалуйста, в чем дело? Программа работает не правильно. Если я к примеру ввожу матрицу:
2 1 4
2 2 3
4 3 2
Программа пишет что симметрична.

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
#include "stdafx.h"
#include  <iostream>
#include <conio.h>
#include <iomanip>
#include "MyCrt.cpp"
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_CTYPE, "Russian");
    int proverka = 0;
    int array1[3][3];
    do
    {
        ClrScr();
        cout << "Введите элементы массива " << endl;
        for(int i = 0; i < 3; ++i)
        {
            cout << "Строка " << i + 1 << ": ";
            for(int j = 0; j < 3; ++j)
                cin >> array1[i][j];
            cin.sync();
        }
        cout << endl;
        cout << endl;
        for(int i = 0; i < 3; ++i)
        {
            for(int j = 0; j < 3; ++j)
                cout << setw(3) << array1[i][j];
            cout << endl;
        }
        for(int i = 0; i < 3; ++i)
            for(int j = 0; j < 3; ++j)
                if (i != j)
                    if (array1[i][j] == array1[j][i])
                        proverka = 1;
                    else 
                        proverka = 0;
        if (proverka == 1) 
            cout << "Симметрична\n";
        else
            cout << "Не симметрична\n";
        cout << "Для завершения работы нажмите esc, для продолжения нажмите любую клавишу.\n";
    }
        while (_getch() != 27);
    cin.get();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 12:11     Проверка симметричности матрицы
Посмотрите здесь:

C++ Проверка квадратной матрицы на симметричность
C++ Проверка на количество элементов матрицы
C++ Проверка типа матрицы
Матрицы. Классы. Проверка ввода C++
C++ проверка элементов матрицы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
02.12.2013, 12:22     Проверка симметричности матрицы #2
Естественно, что она не будет работать.
Цитата Сообщение от niikiita Посмотреть сообщение
for(int i = 0; i < 3; ++i)
* * * * * * for(int j = 0; j < 3; ++j)
* * * * * * * * if (i != j)
* * * * * * * * * * if (array1[i][j] == array1[j][i])
* * * * * * * * * * * * proverka = 1;
* * * * * * * * * * else
* * * * * * * * * * * * proverka = 0;
У Вас в целом алгоритм неправильный. В Вашей матрице последний элемент, который проверяется (3,2) он равен (2,3) - естественно, что "proverka = 1".
niikiita
3 / 3 / 0
Регистрация: 29.05.2013
Сообщений: 223
02.12.2013, 12:27  [ТС]     Проверка симметричности матрицы #3
Цитата Сообщение от Ded_Vasilij Посмотреть сообщение
Естественно, что она не будет работать.

У Вас в целом алгоритм неправильный. В Вашей матрице последний элемент, который проверяется (3,2) он равен (2,3) - естественно, что "proverka = 1".
Т. е. мне нужно полность поменять проверку?
max_besheniy
25 / 25 / 1
Регистрация: 21.11.2013
Сообщений: 208
02.12.2013, 13:28     Проверка симметричности матрицы #4
Решение "в лоб"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
int main()
{
    int a[100][100];
    int n,i,j,k;
    cin>>n;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            cin>>a[i][j];
    k=0;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            if (a[i][j]!=a[j][i])
                k=1;
    if (k==0) cout<<"Yes"<<endl;
    else cout<<"No"<<endl;
    return 0;
}
Yandex
Объявления
02.12.2013, 13:28     Проверка симметричности матрицы
Ответ Создать тему
Опции темы

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