Сделал задачу:
Цитата:
Выделить цветом и подсчитать число слов, удовлетворяющих следующим условиям:
1. Слово содержит не менее четверти гласных букв
2. Слово принадлежит столбцу, в котором есть хотя бы три слова из 5-ти букв.
K=2, L=7, M=20, N=10
|
Но сомневаюсь в правильности выполнения второго условия:
Код:
Program la1;
Uses
Crt;
Const
K = 2;
L = 7;
M = 20;
N = 10;
Type
Slovo = array[1..L] of char;
Massiv = array[1..M,1..N] of Slovo;
Var
A: massiv;
Kol_Slov: integer;
FindColumn: byte;
Procedure VvodSlova(var z: Slovo);
Var
i,n: byte;
Begin
n := K + Random(6);
for i := 1 to L do
if i <= n
then z[i] := Chr(65 + Random(26))
else z[i] := Chr(32);
End;
Function LenghtSlovo(sl: Slovo): byte;
Var
i: byte;
Begin
for i := 1 to L do
begin
if sl[i] = ' ' then
begin
LenghtSlovo := i - 1;
Break;
end;
end;
End;
Function Proverka1(z: Slovo): boolean;
Const
alf: string[6] = 'AEIJOUY';
Var
i, j, lenght, kol: byte;
Begin
kol := 0;
Proverka1 := true;
lenght := LenghtSlovo(z);
for j := 1 to 6 do
for i := 1 to lenght do
if z[i]=alf[j] then
begin
inc(kol);
break;
end;
if kol/lenght<1/4 then Proverka1:=false;
End;
Procedure Proverka2(var Column: byte; z: massiv);
Var
i,j,kol,ColumnKol: byte;
Begin
ColumnKol := 0;
for j := 1 to N do
begin
kol := 0;
for i:= 1 to M do
begin
if j mod 5 = 0 then Continue;
if LenghtSlovo(z[i,j]) = 5 then Inc(kol);
end;
if kol > 3 then
begin
Column := j;
ColumnKol := kol;
end;
end;
End;
Procedure VvodMass(var z: massiv);
Var
i,j: byte;
Begin
Randomize;
for i := 1 to M do
for j:= 1 to N do
VvodSlova(z[i,j]);
End;
Procedure PrintMass(z: massiv; var kol: integer);
Var
i,j: byte;
Begin
kol := 0;
for i := 1 to M do
begin
for j := 1 to N do
begin
if Proverka1(z[i,j]) = true
then
if j = FindColumn then
begin
TextColor(10);
Inc(kol);
end
else TextColor(14)
else TextColor(7);
if j <> N then Write(z[i,j], ' ')
else Write(z[i,j])
end;
Writeln;
end;
End;
Begin
ClrScr;
VvodMass(A);
Proverka2(FindColumn, A);
PrintMass(A, Kol_Slov);
Writeln;
Write('Количество слов, удовлетворяющих условиям = ', Kol_Slov);
Repeat Until KeyPressed
End.