Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2009, 15:12   #1
Deep-Minimal
Пользователь
 
Регистрация: 29.06.2009
Сообщений: 20
По умолчанию Множества

Здравствуйте, помогите пожалуйста с задачей:

Организовать ввод элементов трёх множеств A, B, C, D. Определить в программе является ли следующее утверждение верным: множество A содержится в множестве B, множества C содержатся в D, а множества B и D пересекаются. Привести значение элементов каждого множества для выполнения этого условия.

Вот листинг:

Код:
program laba7;
uses crt;
var
   A,B,C,D,E: set of byte;
   n,i,y: byte;
   x: boolean;
begin
     clrscr;
     A:=[];
     D:=[];
     C:=[];
     B:=[];
     writeln ('vvedite koli4estvo elementov mnogestva A');
     read(n);
     writeln('vvedite',n:3,'elementov A=');
     for i:=1 to n do
         begin
              readln(y);
              A:= A+[y];
         end;
         writeln ('vvedite koli4estvo elementov mnogestva B');
         read(n);
         writeln('vvedite',n:3,'elementov B=');
         for i:=1 to n do
             begin
                  readln(y);
                  B:= B+[y];
             end;
             writeln ('vvedite koli4estvo elementov mnogestva C');
             read(n);
             writeln('vvedite',n:3,'elementov C=');
             for i:=1 to n do
                 begin
                      readln(y);
                      C:= C+[y];
                 end;
                 writeln ('vvedite koli4estvo elementov mnogestva D');
                 read(n);
                 writeln('vvedite',n:3,'elementov D=');
                 for i:=1 to n do
                     begin
                          readln(y);
                          D:= D+[y];
                     end;
                     x:= (A<=B) and (C<=D) and (B*D<>[]);
                     writeln(x);
                     readkey;
end.

У меня такой вопрос, как вывести множества A,B,C,D?

Последний раз редактировалось Deep-Minimal; 29.06.2009 в 15:19. Причина: Замена программы, была ошибка
Deep-Minimal вне форума Ответить с цитированием
Старый 29.06.2009, 16:11   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

есть такой недостаток у реализации множеств в Pascal - единственный способ вывести содержимое множества - это перебирать всё возможные элементы и проверять их вхождение. если входит - то выводить:
Код:
WriteLn('Множество A: [')
for i:=0 to 255 do
   if i in A then Write(i:4);
WriteLn(']');
p.s. а лучше задать для множества тип и написать процедуру печати элементов множества:
Код:
type
  SetOfByte = set of byte; 

procedure WriteSet( const Zagolovok : string; MySet : SetOfByte);
var i : integer;
begin
WriteLn(Zagolovok);
for i:=0 to 255 do
   if i in MySet then Write(i:4);
WriteLn;
end;

var
   A,B,C,D,E: SetOfByte;
...
begin
   ...
   WriteSet('Множество A', A);
   WriteSet('Множество B', B);
...
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.06.2009, 16:20   #3
Deep-Minimal
Пользователь
 
Регистрация: 29.06.2009
Сообщений: 20
По умолчанию

Спасибо вам огромное!!!
Помогли!
Deep-Minimal вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Множества Rin@ Паскаль, Turbo Pascal, PascalABC.NET 13 16.06.2009 15:39
Множества Archangelos Паскаль, Turbo Pascal, PascalABC.NET 5 01.06.2009 11:26
Множества Doublefaced Помощь студентам 3 24.03.2009 18:58
Множества в Си Иллидан Общие вопросы C/C++ 14 17.01.2008 15:58