Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
36
Добавлен:
12.05.2015
Размер:
324.1 Кб
Скачать

Приклад 1.

Turbo Pascal немає засобів вводу-виводу елементів множин

Тому задати множину можна за допомогою оператора

присвоєння , наприклад :

c1 :=[‘а’, ‘б’, ‘п’, ‘с’,’т’,’у’];

c4 := [1, 3, 5..10];

Приклад 2.

Вивід значень цих множин можна зробити за допомогою операторів циклу:

Var

 

c : char;

 

 

i : integer;

 

-----------------------------

 

For

c:= ‘a’ to ‘я ’ do

 

 

If c in

c1 then writeln ( c );

 

For

i:= 1

to 10 do

 

 

If i in c4 then writeln ( i );

21

--------------------------------

Приклад 3.

Var

st : string;

c : char;

cif, cif1 : set of char;

i : integer;

{вивести цифри рядку в тому порядку, в якому вони зустрічаються в реченні }

--------------------------------------

cif:=[‘0’.. ‘9’] ;

for i:=1 to length (st) do

if st[i] in cif then write(st[i], ’ ‘);

22

Приклад 4.

{ вивести цифри, які не використовуються в

рядку, в порядку зростання }--------------------------------------

cif:=[‘0’.. ‘9’] ;

cif1:=[] ;

for i:=1 to length (st) do

if st[i] in cif then cif1:=cif1+[ st[i] ];

{ в cif1 цифри, які використовуються в рядку}

cif1:=cif - cif1;

{ в cif1 цифри, які не використовуються в рядку}

for c:=’0’ to ‘9’ do

if c in cif1 then write(c, ‘ ‘);

--------------------------------------

23

ПРИКЛАД ЗАВДАННЯ ПРОГРАМИ

Тема: „Рядки”,.

Завдання: дано: послідовність, яка вміщує від 1 до 30 слів, у кожному з яких від 1 до 5 рядкових латинських букв; поміж сусідніми словами кома, за останнім словом – крапка. Надрукувати: усі різні слова та показати для кожного з них кількість його входжень у послідовність.

Тема: „Множини”.

Завдання: вивести в алфавітному порядку усі рядкові голосні.

24

ПРИКЛАД ПРОГРАМИ

Програма:

PROGRAM LAB2;

uses crt;

type st=array[1..30] of string[5];

var str:string;

mas:st;

kol:integer;

PROCEDURE VVOD(var stroka:string);

BEGIN

writeln('Vvedite stroku');

readln(str);

END;

PROCEDURE MAS_1(str:string; var mas:st);

var i,j:integer;

BEGIN

i:=0;

j:=1;

REPEAT

i:=i+1;

if (str[i]<>',') and (str[i]<>'.') then

mas[j]:=mas[j]+str[i]

else

j:=j+1;

UNTIL str[i]='.';

kol:=j-1;

END;

PROCEDURE MAS_2 (str:string;mas:st); var i,n:integer;

BEGIN

FOR i:=1 to kol do BEGIN

n:=0;

WHILE pos(mas[i],str)<>0 do BEGIN

n:=n+1;

str[pos(mas[i],str)]:='';

END;

if n<>0 then writeln(mas[i],' - ',n);

END;

END;

 

PROCEDURE GOLOSNI(str:string);

 

type mn=set of char;

 

var mn1,mn2:mn;

 

i:integer;

 

ch:char;

 

BEGIN

 

mn1:=['e','y','u','i','o','a'];

 

mn2:=[];

 

FOR i:=1 to length(str) do

 

if str[i] in mn1 then

 

include(mn2,str[i]);

 

FOR ch:='a' to 'z' do

 

if ch in mn2 then

 

write(ch);

 

END.

 

BEGIN

 

clrscr;

 

VVOD(str);

 

MAS_1(str,mas);

 

MAS_2(str;mas);

 

GOLOSNI(str);

 

readln;

25

END.

Завдання: Надрукувати усі слова, які

відрізняються від останнього слова, спочатку вилучивши із кожного слова першу літеру.

Програма:

uses crt;

var st:string; st1:string;

procedure probil(var st:string);

var i:integer;

begin

while st[1]=' 'do delete(st,1,1);

while pos(' ',st)<>0 do delete(st,pos(' ',st),1);

end;

26

procedure ost_slovo(st:string;var st1:string);

var i:integer;

begin

i:=length(st);

while st[i]<>' 'do i:=i-1;

st1:=copy(st,i+1,length(st)-i);

end;

27

procedure slova(st:string;st1:string);

var st2:string;

begin

 

while length(st)>length(st1) do

 

begin

 

st2:=copy(st,1,pos(' ',st)-1);

 

if st2<>st1 then

 

begin

 

delete(st2,1,1);

 

writeln(st2);

 

end;

 

delete (st,1,pos(' ',st));

 

end;

end;

28

 

{------MAIN------}

BEGIN

clrscr;

writeln('Vvedite stroky');

readln(st);

probil(st);

ost_slovo(st,st1);

slova(st,st1);

readln;

END.

29