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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
#1

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

15.01.2011, 00:30. Просмотров 768. Ответов 3
Метки нет (Все метки)

Проверить матрицу на симметричность.Да я знаю такие задачи уже были.Но я хочу именно свой код.Не пойму что не так!Почему не правильно!Посмотрите пожалуйста...

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++ Симметричность массива
C++ Симметричность массива
Симметричность матрицы C++
симметричность строки на С++ C++
C++ Симметричность матрицы
C++ Проверка последовательности символов на симметричность
Проверить k строку массива N*M на симметричность C++
Объяснить код проверки строки на симметричность C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 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
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
15.01.2011, 01:12     Проверьте симметричность #4
barlog, потому что достаточно двигаться только или выше или ниже нижней диагонали, при этом не учитывая элементы главной диагонали.
Ведь двигаясь ниже главной диагонали вы меняя местами координаты вы сравниваете соответствующие элементы выше главной диагонали.
При первом несоответствии элементов вы выводите сообщение о том, что матрица не симметрична и прерываете выполнение функции(return), потому как дальше проверять смысла нет.
Если все элементы совпали, т.е. матрица симметрична - выводим сообщение.
Yandex
Объявления
15.01.2011, 01:12     Проверьте симметричность
Ответ Создать тему
Опции темы

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