Задача № 1843 Pascal
Условие задачи - из списка задач к Госэкзаменам по предмету "Технология разработки программных продуктов".
Задача №8. Ввести строку символов не более 50. Для каждого слова заданной строки (на русском) указать долю согласных. Определить слово в котором доля согласных максимальна.
const
letter:array[1..23]of char=
('б','в','г','д','ж','з','й','к','л','м','н','п','р','с','т','ф', 'х','ч','ш','щ','ъ','ь','э');
var
st:string[50];
i,j:byte;
flag_word:boolean;
all_letter,tmp_letter,max_letter,max:integer;
BEGIN writeln('Введите строку:'); readln(st); writeln; max:=1; all_letter:=0; {всего согласных букв в строке } tmp_letter:=0; {хранение числа букв в каждом слове } max_letter:=0; {максимальное число согл. букв в слове } flag_word:=false; {слово не было начато }
st:=' '+st; {считать, что строка начинается с пробела}
{цикл обработки всей строки} for i:=2 to length(st) do
begin
{начало слова} if (st[i]<>' ')and(st[i-1]=' ') then flag_word:=true;
{подсчёт, если было начало слова}
if flag_word then begin
write(st[i]);
for j:=1 to 23 do if st[i]=letter[j] then
begin
inc(all_letter);
inc(tmp_letter);
end;
end;
{конец слова} if (st[i]=' ')and(st[i-1]<>' ')or(i=length(st)) then
begin
flag_word:=false;
writeln(' = ',tmp_letter);
if max_letter<tmp_letter then
begin
max_letter:=tmp_letter;
inc(max);
end;
tmp_letter:=0;
end;
end;
writeln;
writeln('Всего согласных = ',all_letter); writeln('Максимально согласных в слове №',max); END. |
- константа letter - массив из согласных букв;
- переменные i,j - для цикла;
- переменная max - номер слова в котором максимальное число согласных.