Delphi-Help

Задача № 1843 Pascal

Оцените материал
(2 голосов)


Задача № 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 - номер слова в котором максимальное число согласных.
Прочитано 6444 раз

Авторизация



Счетчики