Дан массив слов и подстрока. Вывести слова, содержащие заданную подстроку не более двух раз (каждая буква может входить только в одну подстроку).Напишите функцию Pos2(z,s : string), которая возвращает «подходит» ли слово или нет, тип возвращаемого значения — boolean — Pascal(Паскаль)

Формат ввода:

n - количество слов
s[1] - первое слово
s[2] - второе слово
...
s[n] - последнее слово
z - подстрока
Формат вывода:

s[1] - первое слово
s[2] - второе слово
...
s[m] - последнее слово
uses crt;
function Pos2(z,s:string):boolean;
var i,j,n:byte;
    s1:string;
begin
s1:=s;
n:=0;
while pos(z,s1)>0 do{пока подстрока есть}
 begin
  n:=n+1;{считаем}
  delete(s1,pos(z,s1),length(z));{удаляем}
 end;
if n in [1..2] then Pos2:=true{если есть и не более 2 раз, подходит}
else Pos2:=false;
end;
 
var mas:array[1..20] of string;
    k,n,i:byte;
    ps:string;
begin
clrscr;
repeat
write('Введите количество слов в массиве, не более 20 n=');
readln(n);
until n in [1..20];
writeln('Введите ',n,' слов:');
for i:=1 to n do
readln(mas[i]);
write('Искомая подстрока: ');
readln(ps);
{выводим нужные слова}
writeln('Слова, содержащиеся в заданном слове не более 2 раз:');
for i:=1 to n do
if Pos2(ps,mas[i]) then
writeln(mas[i]);
readln
end.

Leave a Comment

8 + 1 =