Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АЯП лекции.doc
Скачиваний:
12
Добавлен:
03.12.2018
Размер:
634.37 Кб
Скачать

Строки.

В Паскале для одномерных массивов-символов предусмотрен стандартный тип

VAR<имя строки>:STRING;

если строка неограниченна, то содержит 255 символов;

если строка ограничена, то после string указывается количество символов в строке.

st:string[8];

Особенности работы: ввод строки осуществляется целиком. Возможно сравнение строки со строкой. Строки позволяю вести обработку поэлементно. Записывается имя строки и указывается номер символа(st[1]).

Существует множество процедур и функций, работающих со строками, например LENGTH(st).

Пример. Задана строка. Вывести элементы этой строки в обратном порядке.

var st:string;

p:integer;

begin writeln(‘Введите строку’);

readln(st);

for p:=length(st) downto 1 do

write(st[p]);

end.

Пример Задана строка из строчных латинских букв и знаков препинания. Определить, является ли эта строка палиндромом.

var st:string;

k,p:integer;

begin writeln(‘Введите строку’).

readln(st);

s1:=’’;s2:=’’;

for p:=1 to length(st) do

if (st[p]>=’a’) and (st[p]<=’z’) then begin

s1:=s1+st[p]; v:=st[p];

s2:=v+s2;end;

if s1=s2 then writeln(‘палиндром’);

else writeln(‘нет’);

end.

Множества.

Множества – неупорядоченное условно-ограниченное количество элементов одинакового типа. На Паскале множества описываются:

VAR<имя множества>:SET OF тип элемента множества;

Множества в памяти – комплексно-логическая функция. Т.е. каждому элементу множества в памяти отводится один бит, который указывает: если «=0», то элементов нет; если «=1», то элементы в множестве есть. Поэтому самих значений элементов в памяти нет. Это не позволяет обратиться напрямую к элементу множества.

Данный тип – порядковый, не превышает размер 256 бит. Ввод и вывод невозможен. В программе множества представляются:

VAR <имя множества>:SET OF тип элемента множества;

BEGIN <имя множества>:=[Э1, Э2, Э3, ЭN].

Стандартные операции с множествами.

Var m1,m2,m3:set of char; b: boolean; c: char;

m1:=m2*m3-пересечение множеств m2 и m3.

m1:=m2+m3-объединение множеств m2 и m3.

b:=c_IN_m1-истина: с входит; лож: не входит.

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

Max=m[1] x=1

Min=m[1] n=1

Min=m[p]

n=p

Max=m[p]

x=p

Var min,max,n,x:integer;

m: array [1..100] of integer;

begin

writeln(‘Введите массив’);

for p:=1 to 100 do

read(m[p]);

min:=m[1]; x:=1; max:=m[1]; x:=1;

for p:=2 to 100 do begin

if min>m[p] then begin

min:=m[p]; n:=p;

if max<m[p] then begin

max:=m[p]; x:=p; end; end;

if x<n then

for p:=x to n do write(m[p],’ ‘)

else for p:=n to x do write(m[p],’ ‘);

end.

Пример. Задана строка из строчных латинских букв. Получить новую строку из исходной, в которую включить первое вхождение символов из исходной строки. Вывести на экран буквы в алфавитном порядке.

Var s,st:string; mn:set of char;

p:integer; c :char;

begin write(‘Введите строку’);

readln(st);

s:=’’; min:=[ ];

for p:=1 to length(st) do

if not (st[p] in min) then min:=min+[st[p]];

s:=s+st[p]; end;

writeln(s);

for c:=’a’ to ‘z’ do

if c in min then write(c); end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]