Дополнить предыдущую программу так, чтобы отдельно дополнительно печатались слова, которые длиннее 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.
Объяснение кода листинга программы
- В данной программе используется язык программирования Pascal ABC.
- Задача программы - дополнительно печатать слова, которые длиннее 8 букв.
- Структура программы включает в себя:
- Объявление переменных и функций.
- Функция 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.
- В основной части программы:
- Считывается строка из ввода пользователя.
- Выполняются процедуры slova и printmass.
- Выводится самое короткое слово.
- В данной программе нет явных ошибок, но для корректной работы необходимо ввести строку перед выполнением программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д