Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal, дискрет. мат.] Список упорядоченных пар  
:(
    Опции темы
M9C1K
Дата 29.6.2009, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 17.5.2009

Репутация: нет
Всего: -1



Помогите разобраться с программой. Множество А ввожу,а вот как список упорядоченных пар, задающий отношение R не пойму.
Условие задачи во вложении!

Код
Program Mnojestva;
  uses crt;
 Type
  Simvol = set of 'a'..'z';
 Var
  A:simvol;
  i:integer;
  x:char;
  procedure vvod(name_set:string; var num_elem:integer; var one_set:simvol);
  var x:char;
  begin
  clrscr;
          writeln('vvedite ',num_elem,' element mnojestva ',name_set);
          readln(x);
          if (x in one_set)
          then begin
                writeln(x,' uje soderjitsya v mnojestve',name_set);
          end
          else begin
                writeln(x,' pomeschon v mnojestvo',name_set);
                one_set:=one_set+[x];
                num_elem:=num_elem+1;
                 end;
                 end;
              procedure vyvod(name_set:string;var one_set:simvol);
   var x:char;
   begin
                  writeln;
                  writeln('     rezultat  mnojestvo ',name_set);
                  writeln;
                for x:='a' to 'z' do if x in one_set then write(x,' ');
 
   end;
 
 
   begin
                A:=[];
 
                i:=1;
                repeat
                        vvod('A',i,A);
                until i>5;
                clrscr;
               writeln;
                  writeln;
                  writeln('     mnojestvo A: ');
                  writeln;
                for x:='A' to 'z' do if x in A then write(x,' ');
   end.



Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  _____.doc 31,00 Kb
PM MAIL   Вверх
M9C1K
Дата 4.7.2009, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 17.5.2009

Репутация: нет
Всего: -1



Помогите люди добрые. Неделю уже не могу ее победить (
PM MAIL   Вверх
M9C1K
Дата 7.7.2009, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 17.5.2009

Репутация: нет
Всего: -1



Уважаемые программисты! Подскажите с задачей плз.

В процедуре  пишет ошибку            procedure vyvodpary( mass:vector);
                                                               begin
                                                                 for i:=1 to r do
                                                                  begin
                                                                    for j:=1 to r do
                                                                   write(mass[i, j]:4);   {здесь ошибку пишет}
                                                                end; 
                                                                  end;

Сначала задаём множество, например ( A B C D ).
Далее задаём пары отношений, к примеру (A-A, A-B, B-B, C-C, D-D).
Теперь составляем МАТРИЦУ БИНАРНЫХ ОТНОШЕНИЙ:

A B C D
A 1 0 0 0
B 1 1 0 0
C 0 0 1 0
D 0 0 0 1
Помогите написать процедуры для свойств.
Проверяем свойства - если на главной диагонали все 1, то рефлексивна.
Если она симметрична относительно главной диагонали ( если есть отношение A-B и B-A, C-D и D-C и т.д.) - то симметрична,а антисимметричность, транзитивность - не знаю. 
Вот ,что cделал ->

Код
Program otnoweniya;
  uses crt;
 Type
  Simvol = set of 'a'..'z';
  vector=array[1..20] of char;
 Var
  mas:vector;
  A:simvol;
  k,n,i,j,r:integer;
  x,key:char;
  procedure vvod(name_set:string; var num_elem:integer; var one_set:simvol);
  var x:char;
  begin
          writeln('vvedite ',num_elem,' element mnojestva ',name_set);
          readln(x);
          if (x in one_set)
          then begin
                writeln(x,' uje soderjitsya v mnojestve',name_set);
          end
          else begin
                writeln(x,' pomeschon v mnojestvo',name_set);
                one_set:=one_set+[x];
                num_elem:=num_elem+1;
                 end;
                 end;
   procedure vyvod(name_set:string;var one_set:simvol);
   var x:char;
   begin

                  writeln('     mnojestvo A: ');
                  writeln;
                for x:='A' to 'z' do if x in A then write(x,' ');



   end;
   procedure vvodpary(var mass:vector);

   begin
    clrscr;
    write(' koli4estvo par ');

    for i:=1 to r do  begin
     for j:=1 to r do begin
      write('A[',i,',',j,'] =');
      writeln;
     end;
     end;
     end;
     procedure vyvodpary( mass:vector);
     begin
      for i:=1 to r do
       begin
        for j:=1 to r do
         write(mass[i, j]:4);
         writeln;
         end;
         end;


   begin
   writeln(' vvedite koli4estvo elementov ');
   readln(n);

                A:=[];
                k:=1;
                repeat
                 vvod('A',k,A);
                until k>n;
                 k:=1;
                 vyvod('A',A);
                 readln;
                 writeln('vvedite razmernosty matricy');
                 readln(r,r);
                 vvodpary(mas);
                 vyvodpary(mas);
                 readln;

                           repeat
                           writeln('=======================');
                           writeln('  1:   refleksivnosty');
                           writeln('  2:   simmetri4nosty');
                           writeln('  3:   antisimmetri4nosty');
                           writeln('  4:   tranzitivnosty');
                           writeln('esk:   vyhod');
                           writeln('=======================');
                           writeln('->');

                           repeat until keyPressed;
                               key:=readkey;
                               writeln('key= ',key);

                         {  case key of
                           '1':begin  obyedinenie(A,B,C); vyvod('C',C);end;
                           '2':begin perese4enie(A,B,C);  vyvod('C',C);end;
                           '3':begin simmetr(A,B,C);      vyvod('C',C);end;
                           '4':begin raznosty(A,B,C);     vyvod('C',C);end;

                           end; }
                               if key <> #27 then readln;
                                 until key=#27;
     end.



PM MAIL   Вверх
Elerond
Дата 8.7.2009, 07:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 184
Регистрация: 18.6.2007

Репутация: 2
Всего: 3



Цитата(M9C1K @  7.7.2009,  19:31 Найти цитируемый пост)
 write(mass[i, j]:4);   {здесь ошибку пишет}


Ты объявил массив как одномерный, а пытаешься "достучаться" как к двумерному, вот и ругается ))
--------------------
Мой блог
PM MAIL WWW   Вверх
M9C1K
Дата 8.7.2009, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 17.5.2009

Репутация: нет
Всего: -1



Понял. Спасибо. А насчет свойств не подскажите? 
PM MAIL   Вверх
Hacknslash
Дата 8.7.2009, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



Ну отношение R на множестве M антисимметрично, если для любых x,y принадлежащих M
R(x,y)&R(y,x)=>x=y
Применительно к матрице это наверное значит, что у тебя нет таких различных i,j что 
(a[i,j]) And (a[j,j])=1 (ну или a[i,j]+a[j,i]=2 можно, если у тебя элементы матрицы integer, но логичнее было бы boolean конечно)

Отношение R на множестве M транзитивно, если для любых x,y,z принадлежащих M
R(x,y)&R(y,z) => R(x,z)
Что тут с матрицей - надо подумать. Хотя по идее можно не париться, как будет выглядеть матрица, а проверять истинность соответствующего логического выражения...
PM MAIL   Вверх
M9C1K
Дата 8.7.2009, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 17.5.2009

Репутация: нет
Всего: -1



Спасибо!
У меня еще вопрос. Я ввожу множество A       ->    W E R T ,выводит у меня тоже W E R T
а мне надо А^2  0000
                           0000
                           0000
                           0000
Как сделать?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0908 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.