Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 22.05.2013, 12:35   #1 (permalink)
kira k
Новичок
 
Регистрация: 22.05.2013
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Работа с множествами

Даны два множества целых чисел А и В, значение элементов которых вводятся в диалоговом режиме.
Определить, являются ли множества идентичными и в случае их различия вывести несовпадающие элементы.
kira k вне форума   Ответить с цитированием

Старый 22.05.2013, 12:35
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Упростить решение проблемы могут эти темы

Моя вторая работа
Помогите с множествами
Моя первая работа
Первая работа
Моя первая работа
Моя первая работа

Старый 22.05.2013, 12:59   #2 (permalink)
Léon
С# - learn or die
 
Аватар для Léon
 
Регистрация: 17.12.2011
Сообщений: 2,438
Записей в дневнике: 8
Сказал(а) спасибо: 21
Поблагодарили 49 раз(а) в 11 сообщениях
Репутация: 19701
По умолчанию

Язык программирования не указали.
Léon вне форума   Ответить с цитированием
Старый 22.05.2013, 13:10   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от 11Angelav Посмотреть сообщение
Язык программирования не указали.
Ладно, на основании помещения в раздел будем считать, что Паскаль. Тогда так:
Код:
Var
 M1,M2,M3,M4:Set of Byte;
 i:Byte;
 YN:Char;
 b:boolean;
Begin
 M1:=[];
 M2:=[];
 Writeln('Set1:');
 Repeat
  Write('Next element: ');
  Readln(i);
  M1:=M1+[i];
  Write('Continue? (Y/N): ');
  Readln(YN);
 Until (YN='N') or (YN='n');
 Writeln;
 Writeln('Set2:');
 Repeat
  Write('Next element: ');
  Readln(i);
  M2:=M2+[i];
  Write('Continue? (Y/N): ');
  Readln(YN);
 Until (YN='N') or (YN='n');
 Writeln;
 M3:=M1-M2;
 M4:=M2-M1;
 b:=(M3<>[]) or (M4<>[]);
 If b then
  begin
   if M3<>[] then
    begin
     Writeln('Not coinciding elements of Set1:');
     for i:=0 to 255 do
      if (i in M1) and Not(i in M2) then write(i:4);
     Writeln;
    end;
   if M4<>[] then
    begin
     Writeln('Not coinciding elements of Set2:');
     for i:=0 to 255 do
      if Not(i in M1) and (i in M2) then write(i:4);
    end;
  end
 else
  Writeln('Sets coicide');
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Старый 22.05.2013, 13:15   #4 (permalink)
Léon
С# - learn or die
 
Аватар для Léon
 
Регистрация: 17.12.2011
Сообщений: 2,438
Записей в дневнике: 8
Сказал(а) спасибо: 21
Поблагодарили 49 раз(а) в 11 сообщениях
Репутация: 19701
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Ладно, на основании помещения в раздел будем считать, что Паскаль.
Ага, пользователь как появится на форуме - сюрприз устроит, скажет что на Delphi.
Léon вне форума   Ответить с цитированием
Старый 22.05.2013, 14:17   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от 11Angelav Посмотреть сообщение
Ага, пользователь как появится на форуме - сюрприз устроит, скажет что на Delphi.
Ну... бывает, конечно. Но ничего страшного: паскалевская часть по сути сохраняется, а все эти формы-обвески пускай сам мастрячит.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 23.05.2013, 08:35   #6 (permalink)
kira k
Новичок
 
Регистрация: 22.05.2013
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

спасибо...но если правда я не очень понимаю работу вашей программы.
kira k вне форума   Ответить с цитированием
Старый 23.05.2013, 10:23   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от kira k Посмотреть сообщение
спасибо...но если правда я не очень понимаю работу вашей программы.
Так, прежде всего - заметил некоторую неточность в своей программе. Исправил.
Теперь попробую объяснить, как она работает.
Прежде всего, раз речь идет о числовых множествах, вспомним, что единственным типом элементов таких множеств может быть byte (диапазон 0..255). Такие множества и объявляем. Далее начинаем вводить значения элементов обоих множеств. Поскольку число элементов множеств наперед не задается, ввод осуществляем в диалоговом режиме. Как только ответ на вопрос о продолжении становится "N" или "n", ввод прекращается.
Далее находим разности. Множество M3 представляет собой совокупность элементов, входящих в множество М1 и не входящих в М2. М4 - соответственно, наоборот. Если множества М1 и М2 совпадают, то обе разности М3 и М4 оказываются пустыми множествами, и булева переменная-флажок b получает значение false. Если хотя бы одна из разностей не пустая, то b становится true.
Если b получает значение true (множества М1 и М2 не совпадают), то выводятся несовпадающие элементы, причем порознь: сначала список элементов (если таковые имеются) множества М1, не входящих в М2, потом - наоборот. Формируются списки так: прогоняем переменную i от 0 до 255 и если какое-то из значений i имеется в М1 и не имеется в М2, это значение выводится на экран. Потом повторяем такой же цикл с перестановкой множеств М1 и М2.
Если же флажок b получает значение false, то выводится сообщение "Множества совпадают".
Всё!
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 07:33.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.