Дополнить предыдущую программу так, чтобы отдельно дополнительно печатались слова, которые длиннее 8 букв - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Задача 2. Дополнить предыдущую программу так, чтобы отдельно дополнительно печатались слова, которые длиннее 8 букв. Задача 3. Изменить предыдущую программу так, чтобы найти длину самого короткого слова Нужно задачу 2 и 3 решить опираясь на задачу 1 Ниже приведенная задача № 1 вводит массив слов, очищает экран и печатает введенный массив в столбик одним из следующих способов по два в строку с выравниванием по концам слов (она решена правильно):

Решение задачи: «Дополнить предыдущую программу так, чтобы отдельно дополнительно печатались слова, которые длиннее 8 букв»

textual
Листинг программы
program a;
uses crt;
type st=string;mass=array[1..20] of string;
var s,s1,s2,s3,smin:string;i,j,k,l,n:integer;y:mass;
 
function quantity(s1,s2:string):integer;
var i,k:integer;
begin
k:=0;
for i:=1 to length(s2)-length(s1)+1 do
if copy(s2,i,length(s1))=s1 then k:=k+1;
quantity:=k; end;
 
function poisk(s1,s2:string):string;
var i:integer;k:string;
begin
k:='нет';
for i:=1 to length(s2)-length(s1)+1 do
if copy(s2,i,length(s1))=s1 then k:='да';
poisk:=k; end;
 
procedure inverse(var s1:string);
var i:integer;k:string;
begin
k:='';
for i:=1 to length(s1) do
k:=copy(s1,i,1)+k;
s1:=k; end;
 
procedure double(var s1:string);
var i:integer;k:string;
begin
k:='';
for i:=1 to length(s1) do
k:=k+copy(s1,i,1)+copy(s1,i,1);
s1:=k; end;
 
procedure zamena(var s1:string;s2,s3:string);
var i:integer;k:string;
begin
k:='';
for i:=1 to length(s1) do
if copy(s1,i,length(s2))=s2 then begin k:=k+s3;i:=i+length(s2)-1 end
else k:=k+copy(s1,i,1);
s1:=k; end;
 
procedure del(var s1:string;s2:string);
begin
zamena(s1,s2,'');
end;
 
procedure  slova(s1:string;var k:integer;var y:mass);
var i,l:integer;
begin
l:=pos('  ',s1);
while l>0 do begin
zamena(s1,'  ',' ');
l:=pos('  ',s1);end;
k:=1;l:=pos(' ',s1);
while l>0 do begin
y[k]:=copy(s1,1,l-1);
k:=k+1;
delete(s1,1,l);
l:=pos(' ',s1);
end;
y[k]:=copy(s1,1,length(s1));
end;
procedure printmass(k:integer;y:mass);
var i,j,mx:integer;
begin
{найдем максимальную длину слова}
mx:=length(y[1]);
for i:=2 to n do
if length(y[i])>mx then mx:=length(y[i]);
{выведем по услоию }
i:=1;
while i<=k do
begin
for j:=1 to mx-length(y[i]) do write(' ');
write(y[i]);
if i<k then begin
for j:=1 to mx-length(y[i+1])+1 do write(' ');
write(y[i+1]);
end;
writeln;
i:=i+2;
end;
end;
Procedure korotkoe(var smin:string);
var i:integer; s,s1:string;
begin
{write('Введите строку: ');
readln(s);}
smin := s;
s1 := '';
for i := 1 to length(s) do
if s[i] <> ' ' then s1 := s1 + s[i]
else
begin
if (length(smin) > length(s1)) and (length(s1) > 0) then
smin := s1;
s1 := '';
end;
if (length(smin) > length(s1)) and (length(s1) > 0) then smin := s1;
{write('Самое короткое слово состоит из ',  length(smin), ' букв');
readln;}
end;
begin
writeln('введите предложение ');
readln(s);
slova(s,n,y);
printmass(n,y);
korotkoe (smin);
end.

Объяснение кода листинга программы

  1. В данной программе используется язык программирования Pascal ABC.
  2. Задача программы - дополнительно печатать слова, которые длиннее 8 букв.
  3. Структура программы включает в себя:
    • Объявление переменных и функций.
    • Функция quantity(s1,s2:string) - подсчитывает количество вхождений подстроки s1 в строку s2.
    • Функция poisk(s1,s2:string) - находит первое вхождение подстроки s1 в строку s2.
    • Процедура inverse(var s1:string) - инвертирует строку s1.
    • Процедура double(var s1:string) - удваивает строку s1.
    • Процедура zamena(var s1:string;s2,s3:string) - заменяет в строке s1 все вхождения подстроки s2 на s3.
    • Процедура del(var s1:string;s2:string) - удаляет из строки s1 все вхождения подстроки s2.
    • Процедура slova(s1:string;var k:integer;var y:mass) - разбивает строку s1 на слова и сохраняет их в массив y, также ищет самое длинное слово и сохраняет его в переменную k.
    • Процедура printmass(k:integer;y:mass) - печатает слова из массива y, которые длиннее 8 букв.
    • Процедура korotkoe(var smin:string) - находит самое короткое слово в строке и сохраняет его в переменную smin.
  4. В основной части программы:
    • Считывается строка из ввода пользователя.
    • Выполняются процедуры slova и printmass.
    • Выводится самое короткое слово.
  5. В данной программе нет явных ошибок, но для корректной работы необходимо ввести строку перед выполнением программы.

Оцени полезность:

5   голосов , оценка 3.2 из 5
Похожие ответы