Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 08.01.2012
Сообщений: 34

Свойства матрицы

22.01.2012, 13:06. Показов 3636. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, написать программу, которая должна проверять свойства матрицы:
1. Если на главной диагонали все элементы равны 1, то программа должна писать, что матрица рефлексивна.
2. Если на главной диагонали все 0, то матрица иррефлексивна.
3. Если элементы матрицы 1,2=2,1; 1,3=3,1; 2,3=3,1 и т.д.(например в матрице 4x4 уже должны быть 1,4=4,1.....), то матрица смметрична.
4. А если наоборот ни один элемент не равен обратному (1,2 не равен 2,1; 1,3 не равен 3,1 и т.д.), то матрица антирефлексивна.
Если возможно, то можете написать с как можно более подробными комментариями, просто я проболел, очень нужно разобраться во всем этом.
Заранее большое спасибо!!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.01.2012, 13:06
Ответы с готовыми решениями:

Программа, которая определяет свойства матрицы
Написать программу на паскаль, которая по матрице M(нулей и единиц),размера NxN, опре- деляет какими свойствами она обладает ...

ООП+матрицы(предки потомки)свойства и т.п. нужна помошь
Всем привет. Вот собственно задача: Описать тип-объект MATRIX (матрица произвольной размерности M*N) и его методы: ввод матрицы; вывод...

Свойства матрицы?
По какому свойству матриц можно сразу назвать ответы? Помогите если не сложно. 3 4 2 -3 2 3 4 -2 5 7 7 -1 10 14 13 1 ...

11
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
23.01.2012, 11:17
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
uses crt;
const nmax=20;
var a: array [1..nmax,1..nmax] of byte;
    n,i,j: byte;
    r,ir,s,an: boolean;
begin
write('Разерность матрицы, не более ',nmax,', n=');
readln(n);
writeln('Заполняем матрицу');                       //в циклах с параметром заполняем матрицк
for i:=1 to n do
    for j:=1 to n do
        begin
        write('a[',i,',',j,']=');
        readln(a[i,j]:2);
        end;
    writeln;
    end;
r:=true; ir:=true; s:=true; an:=true;              //изначально считаем, что все условия выполняются
writeln('Дана матрица');
for i:=1 to n do                                  //в циклах с параметром выводим матрицу на экран
    begin
    for j:=1 to n do
        write(a[i,j]:2);
    writeln;
    end;                                                //в циклах с парметром проверяем условия
for i:=1 to n do
    for j:=1 to n do
        begin
        if (i=j) then
           begin
           if (a[i,j]=1) and (r=true) then r:=true else r:=false;
           if (a[i,j]=0) and (ir=true) then ir:=true else ir:=false;
           end;
        if (a[i,j]=a[j,i]) and (s=true) then s:=true else
           begin
           s:=false;
           if an=true then an:=true else an:=false;
           end;
        writeln(an);
        end;
writeln ('Свойства матрицы');
if r then writeln ('рефлексивна');
if ir then writeln ('иррефлексивна');
if s then writeln ('симметрична');
if an then writeln ('антирефлексивна');
end.
1
0 / 0 / 0
Регистрация: 08.01.2012
Сообщений: 34
23.01.2012, 16:58  [ТС]
КонецСвета, спасибо, а сможешь ее переделать, чтобы программа считывала матрицу из текстового файла?
Мне дан текстовый файл с таким содержанием:
1 1
1 2
2 2
2 3
3 3
3 4
4 4

вот и на пересечении этих пар должны ставиться единички, а в остальных местах нули. А чтобы уже потом программа определяла свойства из составленной матрицы. Сама матрица 5х5.
0
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
23.01.2012, 17:07
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
uses crt;
const n=5;
var a: array [1..n,1..n] of byte;
    i,j,x,y: byte;
    r,ir,s,an: boolean;
    f: text;
begin
assign(f,'C:\in.txt');
reset(f);
writeln('Заполняем матрицу');                       //в циклах с параметром заполняем матрицк
for i:=1 to n do
    for j:=1 to n do
        a[i,j]:=0;
while not (eof(f)) do
      begin
      read(f,x);
      readln(f,y);
      a[x,y]:=1;
      end;
r:=true; ir:=true; s:=true; an:=true;              //изначально считаем, что все условия выполняются
writeln('Дана матрица');
for i:=1 to n do                                  //в циклах с параметром выводим матрицу на экран
    begin
    for j:=1 to n do
        write(a[i,j]:2);
    writeln;
    end;                                                //в циклах с парметром проверяем условия
for i:=1 to n do
    for j:=1 to n do
        begin
        if (i=j) then
           begin
           if (a[i,j]=1) and (r=true) then r:=true else r:=false;
           if (a[i,j]=0) and (ir=true) then ir:=true else ir:=false;
           end;
        if (a[i,j]=a[j,i]) and (s=true) then s:=true else
           begin
           s:=false;
           if an=true then an:=true else an:=false;
           end;
        end;
writeln ('Свойства матрицы');
if r then writeln ('рефлексивна');
if ir then writeln ('иррефлексивна');
if s then writeln ('симметрична');
if an then writeln ('антирефлексивна');
close(f);
end.
1
0 / 0 / 0
Регистрация: 08.01.2012
Сообщений: 34
23.01.2012, 17:28  [ТС]
КонецСвета,
Почему то антирефлексивность (на самом деле антисимметричность, это я ошибку допустил) неправильно находится. Хотя это не так уж важно.
Последняя просьба, если конечно сможешь помочь, добавь, пожалуйста, свойство связности.
Связностью обладают такие матрицы, в которых хотя бы один столбец и одна строка полностью состоят из нулей, при этом исключая главную диагональ (т.е. если в этом столбце и строке, состоящим полностью из нулей на главной диагонали стоит единица, то матрица все равно обладает свойством связности).
А так ты просто молодец, все замечательно работает.
0
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
23.01.2012, 17:49
zEROma, уточни, какие ошибки в "антисимметричности"?
1
0 / 0 / 0
Регистрация: 08.01.2012
Сообщений: 34
23.01.2012, 17:57  [ТС]
Моя матрица не обладает антисимметричностью, но почему то программа пишет это свойство. В общем при антисимметричности каждому элементу матрицы [i,j] должен соответствовать противоположный [j,i]. Например, если элемент [5,1]=0, то элемент [1,5]=1. и так для каждого элемента (ну на главной диагонали могут находиться любые символы и 0, и 1)
0
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
23.01.2012, 18:15
вот, с исправленной антисимметричностью (у меня почему-то вложилось условие в условие...) и, вроде бы, связностью
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
uses crt;
const n=5;
var a: array [1..n,1..n] of byte;
    i,j,x,y,k,kk: byte;
    r,ir,s,an: boolean;
    f: text;
begin
assign(f,'C:\in.txt');
reset(f);
writeln('Заполняем матрицу');                       //в циклах с параметром заполняем матрицк
for i:=1 to n do
    for j:=1 to n do
        a[i,j]:=0;
while not (eof(f)) do
      begin
      read(f,x);
      readln(f,y);
      a[x,y]:=1;
      end;
r:=true; ir:=true; s:=true; an:=true;              //изначально считаем, что все условия выполняются
writeln('Дана матрица');
for i:=1 to n do                                  //в циклах с параметром выводим матрицу на экран
    begin
    for j:=1 to n do
        write(a[i,j]:2);
    writeln;
    end;                                                //в циклах с парметром проверяем условия
for i:=1 to n do
    begin
    k:=0;
    for j:=1 to n do
        begin
        if (i=j) then
           begin
           if (a[i,j]=1) and (r=true) then r:=true else r:=false;
           if (a[i,j]=0) and (ir=true) then ir:=true else ir:=false;
           end;
        if (a[i,j]=a[j,i]) and (s=true) then s:=true else s:=false;
        if (a[i,j]<>a[j,i]) and (an=true) then an:=true else an:=false;
        if (i<>j) and (a[i,j]=0) then inc(k);
        end;
    if k=4 then inc(kk);
    end;
if kk>0 then
   begin
   kk:=0;
   for j:=1 to n do
       begin
       k:=0;
       for i:=1 to n do
           if (i<>j) and (a[i,j]=0) then inc(k);
       if k=4 then inc(kk);
       end;
   end;
writeln ('Свойства матрицы');
if r then writeln ('рефлексивна');
if ir then writeln ('иррефлексивна');
if s then writeln ('симметрична');
if an then writeln ('антирефлексивна');
if kk>0 then writeln ('обладает свойством связности');
close(f);
end.
1
0 / 0 / 0
Регистрация: 08.01.2012
Сообщений: 34
23.01.2012, 21:17  [ТС]
КонецСвета, спасибо большое, работает отлично!!!

Добавлено через 1 час 30 минут
Прокомментируй, пожалуйста, нахождение связности с помощью переменных k и kk, не смог разобраться (((

Добавлено через 34 минуты
Точнее что такое k, а что kk?
0
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
23.01.2012, 22:14
в первом цикле
k-счетчик 0 в строке
kk- счетчик строк с 0
во втором
k-счетчик 0 в столбце
kk- счетчик столбцов с 0
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for i:=1 to n do                         //в цикле с параметром перебираем строки
    begin
    k:=0;                               //для каждой строки изначально считаю количество 0 равным 0 (вдруг их там вообще нет...)
    for j:=1 to n do                    //в цикле для элементов строки
        if (i<>j) and (a[i,j]=0) then inc(k); //исключая элемент на главной диагонали, проверяю условие что элемент равен 0 и увеличиваю K если это так
        end;
    if k=4 then inc(kk);              //если количество нулевых элементов равно размеру матрицы минус 1 (так как диагональ не учитывается), то увеличиваю счетчик строк, которые заполнены 0ми (здесь можно было бы остановится, так как условие наполовину проверено)
    end;
if kk>0 then                        //итак, если удалось найти хотя бы одну строку с нолями
   begin                            //тогда начинаю ситать столбцы
   kk:=0;                           //изначально считаю, что столбцов с нолями нет
   for j:=1 to n do                 //перебираю все столбцы
       begin
       k:=0;                        //изначально для каждого столбца считаю, что в нем нет нулевых элементов
       for i:=1 to n do                //в цикле с параметром перебраю элементы столбца
           if (i<>j) and (a[i,j]=0) then inc(k);     //если равны 0, увеличиваю счетчик
       if k=4 then inc(kk);             //если все элементы кроме главной диагонали нулевые, увеличививаю счетчик столбцов
       end;
   end;
if kk>0 then writeln ('обладает свойством связности'); //если есть хоть один столбец, значит и строка есть, значит, связность выполняется
можно, вроде, сделать рациональнее, но надо подумать...
1
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
23.01.2012, 22:40
вот схема не гарантирую...
Миниатюры
Свойства матрицы   Свойства матрицы   Свойства матрицы  

Свойства матрицы   Свойства матрицы   Свойства матрицы  

Свойства матрицы   Свойства матрицы  
1
0 / 0 / 0
Регистрация: 23.01.2012
Сообщений: 15
24.01.2012, 22:01
Привет всем. У меня задача на подобии такой.Только даны другие данные в текстовом файле.
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
Помогите пожалуста сделать програмку с коментариями,чтоб преподу мог обьяснить что да как.Матрица 3х3. И если будет возможность то блок схему. Буду премного благодарен всем кто поможет.
свойствама: рефлексивность, антирефлексивность, симметричность, транзитивность, связность. --Остальные не требуются.

Добавлено через 22 часа 28 минут
отбой.Нужна только блок схема.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.01.2012, 22:01
Помогаю со студенческими работами здесь

Как через свойства обеспечить доступ к количеству строк и столбцов матрицы?
Здравствуйте. Объясните, пожалуйста, механизм, согласно которому обеспечивается доступ к количеству строк и столбцов (только чтение) с...

Выполнить команду в set свойства для свойства SelectedItem (ComboBox ) MVVM
Хай Коротко: при каждом выборе элемента из ComboBox нужно выполнять команду, для которой в качестве параметра нужно передать экземпляр...

Что лучше, свойства с приватной переменной или автоматические свойства?
Известно, что в классах свойства можно определить так: class MyClass { private int val; public int Val ...

PropertyGrid. Как отловить видимость свойства в зависимости от другого свойства?
Работаю с propertyGrid. Одно поле высвечивается, когда в другом появляется определенное значение. Взяла за основу раздел «Как управлять...

Биндинг свойства контрола к одной из переменных свойства класса
Добрый день. У меня есть вопрос по биндингу. Ситуация следующая: У меня есть структура, которой содержится несколько переменных....


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru