Лабораторная работа № 14 ТЕМА: Реализация алгоритмов с множествами в виде программ. ЦЕЛЬ РАБОТЫ: Закрепление знаний о множественных типах данных; о принципах работы с множествами; составление, ввод и выполнение программ с использованием множеств. ОБОРУДОВАНИЕ: Персональный компьютер, задания лабораторной работы по вариантам. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ: Borland Turbo Pascal 7.0 1. ОСНОВНЫЕ СВЕДЕНИЯ Множеством в Паскале называется набор значений какого-нибудь порядкового типа, подчиняющийся специфическим правилам. В программе множество записывается в виде списка этих значений в квадратных скобках. Например: [7, 5, 0, 4] или ['п', 'ж', 'л']. Множество не должно состоять более чем из 256 элементов и не должно содержать элементов с порядковыми номерами меньше нуля и больше 255. 2. ВЫПОЛНЕНИЕ РАБОТЫ 2.1. 2.2. 2.3. 2.4. Составьте и выполните программу согласно вариантам заданий. Проверьте полученный результат. Выполните анализ ошибок, опишите действия по их устранению. Запишите листинг программы в тетрадь. Варианты заданий: Вариант 1. Сформировать и вывести на экран множество из n символов латинского алфавита (n<20). Если вводимая буква уже есть в множестве, выдать соответствующее сообщение. Обратите внимание, что вводимые буквы могут быть и прописными, и строчными, поэтому при выводе в цикле For параметр цикла принимает все значения для букв латинского алфавита от A до z. Вариант 2. Дана строка символов. Удалить из нее все знаки препинания. Вариант 3. Дан текст на русском языке. Определить, каких букв больше – гласных или согласных. Вариант 4. Дан текст на русском языке. Найти количество согласных букв в последнем слове. Вариант 5. Дано натуральное число n. Напечатать в возрастающем порядке все цифры, которых нет в записи данного числа. 3. КОНТРОЛЬНЫЕ ВОПРОСЫ Вариант 1,3. Какие операции над множествами вы знаете? Как в Паскале обозначаются операции над множествами? Вариант 2,4. Сколько способов описания множеств вы знаете? Как объявляются множества? Вариант 5. Как в Паскале обозначается проверка на вхождение элемента в множество? Для учителя Вариант 1. Program Mnog_Sim; Const N=20; Var S : Set Of Char; B : Char; I : Integer; Begin S := []; For I:=1 To N Do Begin Writeln (’Введите букву’); Readln(B); If B In S Then Writeln(’Буква ’,B,’ уже есть’) Else S:=S+[B]; End; Writeln(’Буквы, входящие в множество’); For B:=’A’ To ’z’ Do If B In S Then Write(B:2); End. Вариант 2. var str, str1 : string; L, i : integer; m : set of char; begin m:=['.', ',', '!', ':', ';', '?', '-']; writeln('Введите текст'); readln(str); L:=length(str); str1:=''; for i:=1 to L do if not(str[i] in m) then str1:=str1+str[i]; str:=str1; writeln('Преобразованный текст ', str); end. Вариант 3. program mn_10; const glasn=['а','е','и','о','у','ы','э','ю','я']; soglas=['б','в','г','д','ж','з','й','л','м', 'н','р','к','п','с','т','ф','х','ц','ч','ш','щ']; var st: string; g,s,i:integer; begin write('Введите строку '); readln(st); g:=0; s:=0; for i:= 1 to length(st) do if st[i] in glasn then inc(g) else if st[i] in soglas then inc(s); if g> s then writeln('Гласных больше') else if g< s then writeln('Согласных больше') else writeln('Согласных и гласных букв поровну'); readln; end. Вариант 4. Program mn_7; uses crt; type let=' а'..'я'; var sogl:set of let; s:string; I,k:byte; begin writeln('введите текст, заканчивающийся точкой'); readln(s); if s[length(s)]<>'.' then s:=s+'.'; sogl :=['п','ф','х','т','с','к','ч','ш','щ','ц', 'б','в','г','д','ж','з','л','м','н','р']; i:= length(s); while s[i]<>' ' do begin if s[i] in sogl then k:=k+1; i:=i-1;end; writeln(k); readln; end. Вариант 5. program mn_5; var m:set of 0..9; n,o,i:integer; begin write('введите число:'); readln(n); m:=[0,1,2,3,4,5,6,7,8,9]; while n>0 do begin o:=n mod 10; n:=n div 10; if (o in m) then m:=m-[o] end; writeln('цифры, которых нет в числе'); for i:=0 to 9 do if i in m then write(i,','); readln; end.