Даны две строки, состоящие из слов. Получить 3-ю строку, состоящую из слов, которые содержаться в обеих строках.
Правильно ли я понимаю : сначала мне нужно разбить обе строки на слова, а потом их сравнивать? А вот каким способом?
function _Pos(const subS, s: String): Integer;
var
i, j, LenS, LenSb: Integer;
find: Boolean;
begin
i := 1;
find := false;
LenS := Length(s);
LenSb := Length(subS);
while (i <= LenS) and not(find) do begin
while (i <= LenS) and (s[i] <> subS[1]) do
inc(i);
if (i <= LenS) and ( i + LenSb - 1 <= LenS) then begin
j := 0;
while (j < LenSb) and (s[i + j] = subS[j + 1]) do
inc(j);
find := (j > LenSb - 1);
end;
if not(find) then inc(i);
end;
if find then _Pos := i else _Pos := 0;
end;
Function slovo ( const s : string; var i : byte) : string;
var
w : string;
begin
w := '';
while ( i <= length (s) ) and ( s[i] <> ' ' ) do
begin
w := w + s[i];
i := i+1;
end;
slovo := w;
end;
for i:=1 to n1 do
for j:=1 to n2 do
if Slovo (s1,i)=slovo(s2,j) then ..
for i:=1 to n1 do
for j:=1 to n2 do
if Slovo (s1,i)=slovo(s2,j) then ..
function exsl (var str : string; var pos : byte ) : string;
var
sl : string;
begin
sl := '';
while sl[pos] <> ' ' do
begin
sl := sl + str[pos];
inc (pos);
end;
inc (pos);
exsl := sl;
end;
function Slovo(s:string;n:integer):string;
const lim =[' ',',','!'];
var ss:string;
k,c,i:integer;
begin
ss:=''; c:=1; k:=1;
while k<=length(s) do begin
while not(s[k] in lim) and (k<=length(s)) do begin
if c=n then ss:=ss+s[k];
inc (k); end;
inc ( c );
while (s[k] in lim) and (k<=length(s)) do inc (k);
end;
Slovo:=ss;
end;
n:=1; while slovo(s,n)<>'' do inc (n);
uses crt;
function Slovo(s:string;n:integer):string;
const lim =[' ',',','!'];
var ss:string;
k,c,i:integer;
begin
ss:=''; c:=1; k:=1;
while k<=length(s) do begin
while not(s[k] in lim) and (k<=length(s)) do begin
if c=n then ss:=ss+s[k];
inc (k); end;
inc ( c );
while (s[k] in lim) and (k<=length(s)) do inc (k);
end;
Slovo:=ss;
end;
var
s1, s2, srez : string;
n1, n2 : integer;
i, j : integer;
begin
clrscr;
writeln (' vvedite 1-u stroky' ); readln (s1);
writeln (' vvedite 2-u stroky' ); readln (s2);
n1 := 1;
n2 := 1;
srez := ' ';
while slovo (s1, n1) <> ' ' do inc (n1);
while slovo (s2, n2) <> ' ' do inc (n2);
for i := 1 to n1 do
for j := 1 to n2 do
if slovo (s1, i) = slovo (s2, j) then srez := srez + slovo (s1, i) +' ';
writeln (' stroka - rezyltat : ' );
writeln (srez);
readkey;
end.
while slovo (s1, n1) <> ' ' do inc (n1);
while slovo (s2, n2) <> ' ' do inc (n2);
while length(slovo (s1, n1))>0 do