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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2011, 17:30   #11
masterlomaster
Форумчанин
 
Аватар для masterlomaster
 
Регистрация: 21.10.2009
Сообщений: 114
По умолчанию

up теме.
Код:
A: set of 0..49
...........................................
        A:=[];
        Writeln ('Vvedite sisla ');
         for i:= 1 to n do
          Begin
           readln(c);
           A:=A+[c];
          end;
           for i:=1 to 49 do
            if i in A then write(i:4);
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
так используйте сдвиг.
допустим, Вам нужно множество от -10 до 5
тогда сдвигаем все элементы множества на 10
получаем ss : set of 0..15;
ну и когда проверяем, добавляем элементы в множество прибавляем +10
например, как проверить, что -3 есть в данном множестве, а если нет - то добавить?
Код:
if Not ((-3 + 10) in ss) then Include(ss, (-3 + 10));
Как я понимаю, если нет 7 в множестве, то добавить цифру семь в множество.

Не пойму что это.


Например вот так написать нельзя A: set of -100..100.

Вот если записано 0..100 то все работает, и отрицательные числа уже не как в это множество не впихнуть, а мне нужно отрицательные вводить.

Последний раз редактировалось masterlomaster; 02.03.2011 в 17:45.
masterlomaster вне форума Ответить с цитированием
Старый 04.03.2011, 08:47   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от masterlomaster
Цитата:
Сообщение от Serge_Bliznykov
так используйте сдвиг.
допустим, Вам нужно множество от -10 до 5
тогда сдвигаем все элементы множества на 10
получаем ss : set of 0..15;
ну и когда проверяем, добавляем элементы в множество прибавляем +10
например, как проверить, что -3 есть в данном множестве, а если нет - то добавить?
Код:
if Not ((-3 + 10) in ss) then Include(ss, (-3 + 10));

Как я понимаю, если нет 7 в множестве, то добавить цифру семь в множество.

Не пойму что это.
Вижу, что не понимаете...
А я думал, раз поблагодарили, значит поняли идею...

Нет, процитированный код не добавляет 7 в множество.
Точнее не так. Формально он добавляет 7 в множество. Но, т.к. мы всё сдвинули. Мы СЧИТАЕМ, что тем самым он добавляет закодированную -3 в множество.
И когда нам надо будет проверить, если ли -3 в данном множестве, мы будет проверять не -3 (это нам Паскаль не позволяет), а СДВИНУТОЕ (закодированное) значение.

давай ещё раз попробуем на примере.

Цитата:
Например вот так написать нельзя A: set of -100..100.
Точно. Поэтому надо записать так:
Код:
A: set of 0..200; {всё сдвинули на 100}
...........................................
        A:=[];
        Writeln ('Vvedite chisla (от -100 до 100) ');
         for i:= 1 to n do
          Begin
           readln(c);
           if (c>=-100) and (c<=100) then begin
                {закодируем числа путём сдвига на 100}
                 c := c + 100;
                A:=A+[c];
           end;
          end;
         
          {ввод элементов множества}
           for i:=0 to 200 do
              if i in A then write((i-100):5); {-100 - это чтобы из закодированного, сдвинутого значения получить исходное}
Так понятнее?!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. Множества. Ria Помощь студентам 2 25.12.2010 16:19
Паскаль множества ololoshqa Помощь студентам 2 18.05.2010 22:07
Множества Турбо Паскаля ][][][ Помощь студентам 2 27.04.2010 19:12