Программирование на языке Pascal




Примеры использования символов, строк и множеств


Задача 1. Оставить в строке только первое вхождение каждого символа, взаимный порядок оставленных символов сохранить.

program z1; var s: set of char; inp, res: string; i: byte;

begin s:=[]; res:= ''; for i:= 1 to length(inp) do if not(inp[i] in s) then begin res:= res+inp[i]; s:= s+[inp[i]]; end; end.

Задача 2.6) Оставить в строке только последнее вхождение каждого символа, взаимный порядок оставленных символов сохранить.

program z2; var inp, res: string; i: byte;

begin res:= ''; for i:= 1 to length(inp) do begin k:= pos(inp[i],res); if k<>0 then delete(res,k,1); res:= res+inp[i]; end; end.

Задача 3. Выдать первые 100 000 натуральных чисел в случайном порядке без повторений.

program z3; var bset: array[0..12499] of byte; {множество, битовый массив} ed: array[1..8] of byte; el,k: longint; kmp,bin: integer; begin ed[1]:= 1; {генерация массива битовых единиц} for k:= 2 to 8 do ed[k]:= ed[k-1] shl 1; {-------------------------------------------------------} k:=0; randomize; {процедура активизации генератора случайных чисел} while k<100000 do begin el:= 1+random(99999); {случайное число из диапазона 0..99999} kmp:= el div 8; bit:= el mod 8; if bit=0 then bit:= 8; if bset[kmp]and ed[bit]=0 {проверка повторов} then begin inc(k); writeln(el); bset[kmp]:= bset[kmp]or ed[bit] end; end end.

  1)

  Как описывать символьные переменные, мы рассказали в лекции 2.

  2)

  Напомним, что жирная квадратная скобка является стандартным элементом синтаксиса, а обычная - указанием на необязательность заключенных в нее элементов.

  3)

  На самом деле "строка длиной в один символ" имеет две компоненты: s[0] (длина строки = 1) и s[1] (собственно символ)

  4)

  См. лекцию 2.

  5)

  Если множества s1 и s2 не пересекаются, то результат s будет совпадать с s1.

  6)

  Более простой вариант решения - повторить решение задачи 1 с заменой цикла for-to на for-downto. Приведенный же вариант решения можно использовать для обработки не только строк, но и файлов.

© 2003-2007 INTUIT.ru. Все права защищены.




Содержание  Назад