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

Проверьте симметричность - C++

Восстановить пароль Регистрация
 
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
15.01.2011, 00:30     Проверьте симметричность #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
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
//---------------------------------------------------------------------------
 
#pragma argsused
 
const n=3;
 
 
 void  MyIn ( int M[][n])
{ int i , j , x , y  ;
  for(i=0 , y=wherey()+1 ; i<n ; i++ , y++ )
   for (j=0 , x=10 ; j<n ; j++ , x+=5 )
     { gotoxy(x,y) ;
       cin>>M[i][j] ;
 
 }
}
 
 
 void Simmetric( int M[][n] )
{ int k=0;
 
for ( int i = 0; i < n; i++ )
  for (int j=0  ; j<n ; j++  )
{ if ( !(M[i][j])==M[j][i])
 { k=1;
     }
  }
 
if(k==0) cout<<"Simm";
else
 cout<<"No_Simm";
 
}
 
 
 
 
int main()
{
 
int A[n][n] ;
 
 
  cout<<endl;
    cout<<endl;
    MyIn( A) ;
 
  cout<<endl;
      cout<<"   ";
  Simmetric( A ) ;
 
getch();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2011, 00:30     Проверьте симметричность
Посмотрите здесь:

Проверка на симметричность слова C++
C++ Проверка квадратной матрицы на симметричность
симметричность матрицы C++
C++ Симметричность массива
C++ Симметричность массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
15.01.2011, 00:45     Проверьте симметричность #2
barlog, симметричность относительно чего?
Если относительно главной диагонали, как у вас, то тогда так:
C++
1
2
3
4
5
6
7
8
9
int i, j;
for(i = 1; i < n; ++i)
    for(j = 0; j < i; ++j)
        if(M[i][j] != M[j][i]) 
        {
            cout<<"No_Simm";
            return;
        }
cout<<"Simm";
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
15.01.2011, 00:59  [ТС]     Проверьте симметричность #3
а не могли бы вы пояснить почему такое условие?...и зачем return?
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
15.01.2011, 01:12     Проверьте симметричность #4
barlog, потому что достаточно двигаться только или выше или ниже нижней диагонали, при этом не учитывая элементы главной диагонали.
Ведь двигаясь ниже главной диагонали вы меняя местами координаты вы сравниваете соответствующие элементы выше главной диагонали.
При первом несоответствии элементов вы выводите сообщение о том, что матрица не симметрична и прерываете выполнение функции(return), потому как дальше проверять смысла нет.
Если все элементы совпали, т.е. матрица симметрична - выводим сообщение.
Yandex
Объявления
15.01.2011, 01:12     Проверьте симметричность
Ответ Создать тему
Опции темы

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