Страница 1 из 1

Глава 52. Задание "Г".

СообщениеДобавлено: 13.12.2016 12:00:35
Герман
Прошу оценить мое решение:

Код: Выделить всё
const CSize = 255;
type TSet = set of 1..CSize;
var S            : TSet;
i, n1, n2, k : integer;

begin
  S := [];
  for i := 1 to CSize do begin
    k := Random(CSize) + 1;
    S:= S + [k];
  end;
  for i := 1 to CSize do
    if i in S then Writeln(i);
  k := 1;
  Write('[');
  repeat
    if (k in S) and ((k + 1) in S) and ((k + 2) in S)
      then begin
        n1 := k;
        while k in S do Inc(k);
        n2 := k - 1;
        Write(n1, '..', n2,  ', ');
      end
      else
        if (k in S) and ((k + 1) in S) and not ((k + 2) in S)
        then begin
          Write(k, ', ');
          Inc(k);
        end
        else
          if (k in S) and not ((k + 1) in S)
              then begin
                Write(k, ', ');
                Inc(k);
              end
              else if not (k in S)
                then Inc(k);
  until (k > (CSize));
  Write(']');
  REadln;
end.


Re: Глава 52. Задание "Г".

СообщениеДобавлено: 14.12.2016 00:22:21
bormant
Множество: 1,2,5
Вывод будет содержать 2?
0 точно не нужен в качестве члена множества?

Re: Глава 52. Задание "Г".

СообщениеДобавлено: 14.12.2016 14:36:08
Герман
2- ку выводит. " 0 " добавил, тоже работает.
Я что хотел спросить- мой вариант вообще колхоз или "на троечку " пойдет?
Вариант из книги я бы сам не осилил. Хитро там придумано.

Re: Глава 52. Задание "Г".

СообщениеДобавлено: 16.12.2016 15:40:06
Oleg_D
Герман писал(а):Вариант из книги я бы сам не осилил. Хитро там придумано.

У вас тоже непросто :)
Я пока только глазами пробежал, не испытывал. Кое-что вам уже подсказали, мне кажется, что там и лишняя запятая выводится в конце. Главный плюс в том, что вы решаете самостоятельно, своим путём идёте. Без этого невозможно научиться. А хорошие изящные решения даже опытным программистам не сразу даются. Мастерство со временем приходит, если стараться каждую программу доводить до совершенства, а не следовать принципу «и так сойдёт». Действуйте в этом духе, и цель будет достигнута!