Отчет по лаб. №5
..docПермский государственный технический университет
кафедра Информационных технологий и автоматизированных систем
Отчет по
Лабораторной работе №5
«Массивы. Множества. Работа с псевдослучайными последовательностями»
По дисциплине «Информатика»
Выполнил студент группы АУЦ-10
Рычин В. Проверил ассистент кафедры ИТАС
Баранов А.А.
Пермь 2010
Задача
Выделить цветом и подсчитать число слов удовлетворяющих условиям:
1. Слово содержит 3 согласные буквы и хотя бы 2 гласные.
2. Слово принадлежит столбцу, в котором в сумме нечетное количество букв.
K=2, L=7, M=20, N=10;
С помощью ПСП сформировать двухмерный MxN массив из элементов. В качестве элементов использовать слова из K..L символов A..Z (одномерный массив символов латинского алфавита). Осуществить подсчет элементов, удовлетворяющих условиям задания. Проверку заданных условий поиска реализовать с использованием типа множества. Вывести на экран сформированный массив в виде таблицы, выделив цветом подсчитанные элементы. Результат подсчета вывести на экран в отдельном окне.
(Здесь: M и N - соответственно число строк и столбцов формируемой
таблицы; K и L - соответственно минимальное и максимальное число букв в формируемых словах - элементах массива).
uses crt;
const
K=2;
L=7;
M=20;
N=10;
AA=Ord('A'); {код буквы А в таблице символов}
ZZ=Ord('Z'); {код буквы Z в таблице символов}
gl=['A','E','I','O','U','Y'];
sgl=['B','C','D','F','G','H','J','K','L','M','N','P','Q','R','S','T','V','W','X','Z'];
var
mas: array [1..M,1..N] of string[L];
i,j,t,p,q, {счетчики циклов}
len, {длина текущей строки=элемента матрицы (K..L)}
ss,kg,ks, {кол. букв в столбце, кол. гласных и согласных в слове}
kol: byte; {кол-во слов, удовлетвлоряющих условию }
begin
clrscr;
randomize;
for i:=1 to M do
for j:=1 to N do
begin
len:=random(L-K+1)+K;
mas[i,j]:=''; {строка соответствующая сначала пустая}
for t:=1 to len do {затем добавляем по одному к ней символы в количестве len}
mas[i,j]:=mas[i,j]+Char(random(ZZ-AA+1)+AA); {псевдослучайные от A до Z}
end;
TextColor(0); {цвет текста по умолчанию}
kol:=0; {пока не нашли ни одного подходящего слова}
for j:=1 to N do {идем по столбцам}
begin
ss:=0;
for i:=1 to M do {считаем буквы в столбцах}
ss:=ss+length(mas[i,j]);
if ss mod 2<>0 then{если нечетное количество букв}
for p:=1 to M do {снова по этому столбцу}
begin
kg:=0;ks:=0;
for q:=1 to length(mas[p,j]) do {смотрим каждое слово}
begin
if mas[p,j][q] in gl then kg:=kg+1; {считаем гласные}
if mas[p,j][q] in sgl then ks:=ks+1; {считаем согласные}
end;
if (kg>=2) and (ks=3) then {если гласных хотя бы 2 и 3 согласных}
begin
TextColor(red); {меняем цвет на красный}
write(mas[p,j]:8); {выводим красным}
kol:=kol+1; {считаем количество}
TextColor(15); {цвет по умолчанию}
end
else write(mas[p,j]:8); {выводим обычные слова в этом столбце}
end
else
for i:=1 to M do
write(mas[i,j]:8); {выводим обычным столбцы где сумма букв не кратна 3}
end;
window(50,23,78,25);{новое окно}
TextBackGround(14); {цвет фона}
TextColor(15); {цвет текста}
readln;
clrscr;
write('Kolichestvo slov=',kol);{это надо в отдельном окне}
readln
end.