Помощь - Поиск - Пользователи - Календарь
Полная версия: Множество
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
@WARlock@
Дано множество Х1, содержит целые числа из диапазона [1..255]. Сформировать новое множество Y путем выделения из множества Х1 нечетных чисел и чисел делящихся без остатка на 17.
Ozzя
Код
type
  asd = set of 1..255;
var
  x1 : asd;
  y  : asd;
  i  : integer;
begin
  for i:=1 to 255 do
    begin
      if (i mod 17 = 0) or (odd (i)) then
      include(y,i);
    end;
end.
klem4
Оззя, ты не внимательно прочитал задание ...
Цитата
путем выделения из множества Х1


Цитата
Х1, содержит целые числа из диапазона [1..255]
- Это ведь не значит что они все есть в множестве x1.
Ozzя
klem4
Согласен.

Код
type
  asd = set of 1..255;
var
  x1 : asd;
  y  : asd;
  i  : integer;
begin
  for i:=1 to 255 do
    begin
      if i in x1 then
        if (i mod 17 = 0) or (odd (i)) then
          include(y,i);
    end;
end.
klem4
Да, но всеже я имел в виду что перед проверкой, надо заполнить множество X1 вручную, хотя .. дождемся автора да и эта чать я думаю труда не составит. rolleyes.gif
Ozzя
Автор раскидал эту задачу почти на всех паскалевских сайтах. unsure.gif Ленив? norespect.gif
@WARlock@
Не ленив просто я не понимаю, как задачи некоторые решаются.
klem4
Вот один из вариантов ...

uses crt;

var
x, y : set of byte;

n : byte;

begin

clrscr;

n := 0;

x := [];
y := [];

repeat
readln(n);
if n in [1..255] then
include(x, n);
until not(n in [1..255]); // ввод продолжается пока n >= 1 и n <= 255


for n := low(x) to high(x) do
if (n in x) and ((n mod 17 = 0) or (odd(n))) then include(y, n);

write('y : ');
for n := low(x) to high(x) do
if n in y then write(n, ' ');

end.
@WARlock@
klem4 , почему-то прога не запускается. Стопарится на low(x) и говорит "ordinal type expected".
klem4
Куда смотреть я не понял ... в общем попробуй поменять все low(x) на 1, high(x) на 255 ...

Куда смотреть я не понял ... в общем попробуй поменять все low(x) на 1, higth(x) на 255 ...
@WARlock@
klem4, a почему при запуске проги ни чво не происходит. Ни при вводе чисел, ни как.
Ozzя
Цитата
Куда смотреть я не понял

Low, High не применимы для множеств
@WARlock@
Цитата(klem4 @ 28.03.2006 19:03) *

Куда смотреть я не понял ... в общем попробуй поменять все low(x) на 1, high(x) на 255 ...

Куда смотреть я не понял ... в общем попробуй поменять все low(x) на 1, higth(x) на 255 ...


усе заменил теперь запускается. Но при запуске ни чво не происходит.
Ozzя
Происходит. Вводишь число, нажимаешь Enter. До тех пор пока не введешь число, выходящее за пределы [1..255] - 0 или 256
@WARlock@
Вот именно вводишь число, нажимаешь Enter и курсор переходит на следующую строку и все.
А должно получится множество Y сост. из нечетных чисел и чисел делящихся без остатка на 17.
Ozzя
Вводишь СЛЕДУЮЩЕЕ число, нажимаешь Enter. До тех пор пока не введешь число, выходящее за пределы [1..255] - 0 или 256
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.