0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 15

Проверить матрицу на рефлексивность, симметричность и транзитивность

30.07.2013, 02:23. Показов 8789. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ошибка: массив имеет другое количество размерностей
Задание: проверить матрицу на рефлексивность, симметричность и транзитивность
Pascal
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
uses crt;
const n = 3;
var a: array[1..n, 1..n] of boolean;
    i, j, k: integer;
    reflexivity, symmetry, transivity: boolean;
 
begin randomize; clrscr;
     {Initilization}
 
     reflexivity := true;
     symmetry    := true;
     transivity  := true;
 
     {Header output}
     write(' ');
     for i:= 1 to n do
         write('|', i);
     writeln;
 
     write(' ');
     for i := 1 to 2 * n do
         write('_');
     writeln;
 
     {Array generation}
     for i := 1 to n do
     begin
          write(i, '|');
          for j := 1 to n do
          begin
               a[i][j] := boolean(random(2));  {----массив имеет другое количество размерностей}
               write(integer(a[i][j]), ' ');
          end;
          writeln;
     end;
 
     {reflexivity check}
     for i := 1 to n do
     begin
          if not a[i][i] then reflexivity := false;
     end;
     writeln('Reflexivity: ', reflexivity);
 
     {symmetry check}
     for i := 1 to n do
     begin
          for j := i + 1 to n do
          begin
               if a[i][j] <> a[j][i] then
               begin
                    symmetry := false;
                    break;
               end;
          end;
 
          if not symmetry then break;
     end;
     writeln('Symmetry: ', symmetry);
 
     {transivity check}
     for i := 1 to n do
     begin
          for j := 1 to n do
          begin
               for k := 1 to n do
               begin
                    if a[i][k] and a[k][j] and not a[i][j] then
                       transivity := false;
               end;
          end;
     end;
     writeln('Transivity: ', transivity);
 
     if reflexivity and symmetry and transivity then
        writeln('Equivalence relation')
     else writeln('NOT equivalence relation');
 
     readln;
end.
может кто-нибудь поможет разобраться в чем дело?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.07.2013, 02:23
Ответы с готовыми решениями:

Проверить на симметричность
Проверить целочисленную матрицу NxM на симметричность относительно строк. Как объяснил преподаватель нужно сделать чтобы сравнивало...

Как проверить симметричность в массиве строк?
Дан массив строк.Если стока симметрична,то... Подскажите как проверить симметричность в массиве строк

Матрица. Проверить симметричность относительно побочной диагонали
спс большое, можете еще эту посмотреть - Дана матрица, надо проверить симметричность (симметрия относительной побочной диагонали).

12
Почетный модератор
 Аватар для Puporev
64308 / 47605 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
30.07.2013, 07:44
Программа написана для Турбо Паскаль и не работает в АВС.
1. Обозначать матрицу как a[i][j] можно, и даже нужно, когда строки или столбцы матрицы описаны как линейный массив, иначе можно писать только так a[i,j].
2. Не допускается прямое приведение типов, исправил
Pascal
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
uses crt;
const n = 3;
var a: array[1..n, 1..n] of boolean;
    i, j, k: integer;
    reflexivity, symmetry, transivity: boolean;
 
begin randomize; clrscr;
     {Initilization}
 
     reflexivity := true;
     symmetry    := true;
     transivity  := true;
 
     {Header output}
     write(' ');
     for i:= 1 to n do
         write('|', i);
     writeln;
 
     write(' ');
     for i := 1 to 2 * n do
         write('_');
     writeln;
 
     {Array generation}
     for i := 1 to n do
     begin
          write(i, '|');
          for j := 1 to n do
           begin
            k:=random(2);
            a[i,j] := k=0;  {----массив имеет другое количество размерностей}
            write(k, ' ');
          end;
          writeln;
     end;
 
     {reflexivity check}
     for i := 1 to n do
     begin
          if not a[i,i] then reflexivity := false;
     end;
     writeln('Reflexivity: ', reflexivity);
 
     {symmetry check}
     for i := 1 to n do
     begin
          for j := i + 1 to n do
          begin
               if a[i,j] <> a[j,i] then
               begin
                    symmetry := false;
                    break;
               end;
          end;
 
          if not symmetry then break;
     end;
     writeln('Symmetry: ', symmetry);
 
     {transivity check}
     for i := 1 to n do
     begin
          for j := 1 to n do
          begin
               for k := 1 to n do
               begin
                    if a[i,k] and a[k,j] and not a[i,j] then
                       transivity := false;
               end;
          end;
     end;
     writeln('Transivity: ', transivity);
 
     if reflexivity and symmetry and transivity then
        writeln('Equivalence relation')
     else writeln('NOT equivalence relation');
 
     readln;
end.
2
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 15
30.07.2013, 13:54  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
a[i,j] := k=0; *{----массив имеет другое количество размерностей}
элементу массива присваивается k, а дальше - k=0; непойму что означает?. спасибо
0
Почетный модератор
 Аватар для Puporev
64308 / 47605 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
30.07.2013, 14:10
Если k=0 a[i,j]=true иначе a[i,j]=false
0
0 / 0 / 0
Регистрация: 05.06.2017
Сообщений: 41
27.10.2017, 23:40
Puporev, Здравствуйте,а как сделать вот в этой программе заполнение с клавиатуры?
0
Почетный модератор
 Аватар для Puporev
64308 / 47605 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
28.10.2017, 09:48
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Поскольку не знаю какой у Вас Паскаль,написал для любого.
Pascal
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
writeln('Введите элементы матрицы 0 и 1 ');
for i:=1 to n do
for j:=1 to n do
 begin
  repeat
   write('a[',i,',',j,']=');
   readln(k);
  until k in [0,1];
  a[i,j]:=k=1;
 end;
{Initilization}
 reflexivity := true;
 symmetry    := true;
 transivity  := true;
{Header output}
 write(' ');
 for i:= 1 to n do
 write('|', i);
 writeln;
 write(' ');
 for i := 1 to 2 * n do
 write('_');
 writeln;
 {Array generation}
 for i := 1 to n do
  begin
   write(i, '|');
   for j := 1 to n do
   if a[i,j] then write('1 ')
   else write('0 ');
   writeln;
  end;
1
0 / 0 / 0
Регистрация: 05.06.2017
Сообщений: 41
29.10.2017, 12:10
Puporev, Спасибо, большое
0
0 / 0 / 0
Регистрация: 05.06.2017
Сообщений: 41
03.11.2017, 19:17
Puporev, Можно еще один вопрос. Как сделать,допустим,ты вводишь 7 чисел от 0 до 9(включительно), и паскаль по ним строил матрицу нулей и единиц,при этом,если число из строки равно числу из столбца там ставится "0". Как это сделать?
0
Почетный модератор
 Аватар для Puporev
64308 / 47605 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
03.11.2017, 19:27
Ничего не понятно.
0
0 / 0 / 0
Регистрация: 05.06.2017
Сообщений: 41
03.11.2017, 20:02
Puporev, вводим числа с клавиатуры от 0 до 9(включительно) любые 7 чисел,он их присваивает строке и столбцу и по ним строит матрицу 0 и 1. Если число в строке равно числу в столбце он напротив них 0 ставит
0
0 / 0 / 0
Регистрация: 05.06.2017
Сообщений: 41
03.11.2017, 20:05
Puporev, так нагляднее будет,мы вводим числа 1,2,3,4,5 надо чтобы он по ним матрицу сформировал
Миниатюры
Проверить матрицу на рефлексивность, симметричность и транзитивность  
0
Почетный модератор
 Аватар для Puporev
64308 / 47605 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
03.11.2017, 21:06
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Примерно так.
Pascal
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
const n=7;
var a:array[0..n,0..n] of byte;
    i,j:byte;
begin
randomize;
for i:=1 to n do
 begin
  a[0,i]:=random(10);
  a[i,0]:=random(10);
 end;
for i:=1 to n do
for j:=1 to n do
if a[i,0]=a[0,j] then a[i,j]:=0 else a[i,j]:=1;
write('   ');
for i:=1 to n do
write(a[0,i]:3);
writeln;
for i:=1 to 3*(n+1) do write('-');
writeln;
for i:=1 to n do
 begin
  write(a[i,0],' |');
  for j:=1 to n do
  write(a[i,j]:3);
  writeln
 end
end.
0
0 / 0 / 0
Регистрация: 05.06.2017
Сообщений: 41
05.11.2017, 22:45
Puporev, да,но мне как бы вручную числа надо вводить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.11.2017, 22:45
Помогаю со студенческими работами здесь

Проверить множество P на рефлексивность, симметричность, антисимметричность и транзитивность. P={(x,y) | x,y принадлежит
Проверить множество P на рефлексивность, симметричность, антисимметричность и транзитивность. P={(x,y) | x,y принадлежит Z, x+1=y}

Свойства нечеткого отношения (рефлексивность, симметричность, транзитивность)
Прошу помощи! нужна программа, которая реализует проверку свойств нечеткого отношения(рефлексивность,антирефлексивность, симметричность,...

Отношение исследовать на рефлексивность, антирефлексивность, симметричность, антисимметричность, транзитивность
Всем доброго времени суток! Есть задача и мало времени для её решения. Просто крик о помощи! Задание: Отношение R\subset {R}^{2}...

Исследовать рефлексивность, симметрию, транзитивность
исследовать рефлексивность, симметрию, транзитивность отношения заданного на множественные Х при условии Х = Z, (x,y) є R, если x-y делится...

Проверить матрицу на симметричность относительно вертикальной оси
Задача состоит в том, чтобы проверить квадратный массив на симметричность относительно вертикальной линии в середине массива, т.е. сравнить...


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

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

Новые блоги и статьи
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru