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

Задача 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 dobegin 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;endend.

1) Как описывать символьные переменные, мы рассказали в лекции 2.
2) Напомним, что жирная квадратная скобка является стандартным элементом синтаксиса, а обычная - указанием на необязательность заключенных в нее элементов.
3) На самом деле "строка длиной в один символ" имеет две компоненты: s[0] (длина строки = 1) и s[1] (собственно символ)
4) См. лекцию 2.
5) Если множества s1 и s2 не пересекаются, то результат s будет совпадать с s1.
6) Более простой вариант решения - повторить решение задачи 1 с заменой цикла for-to на for-downto. Приведенный же вариант решения можно использовать для обработки не только строк, но и файлов.

 

6. Лекция: Ввод и вывод информации: текстовые файлы:
Ввод информации из текстового файла. Вывод информации в текстовый файл. Оперирование текстовыми файлами.

Ввод и вывод: файлы

В первой лекции мы уже рассматривали ввод информации с клавиатуры и вывод ее на экран1). Однако процесс ввода с консоли весьма трудоемок, а результат вывода на консоль - недолговечен. К счастью, существует более удобный способ записывать, хранить, пересылать и по необходимости считывать информацию из постоянной памяти компьютера. Для этого применяются файлы.