Помощь - Поиск - Пользователи - Календарь
Полная версия: строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
OliGan
Даны два предложения. Напечатать все слова, которые есть только в одном из их. помогите пожалуйста

program st;

type stroka=string[25];

var
s1,s2,dops,news1:stroka;
n,i,m,p,q:integer;

begin
writeln('vvedite pervuyu stroku ');
readln(s1);
writeln('vvedite vtoruyu stroku ');
readln(s2);
q:=length(s1);
while q <> 0 do begin
n:=pos(' ',s1);
dops:=copy(s1,1,n); // копирование слова в дополнительную строку
m:=pos(dops,s2);
if m<>0 then begin
p:=length(dops);
delete(s1,1,n);
delete(s2,m,p);
q:=length(s1);
end
else
begin
delete(s1,1,n);
q:=length(s1);
news1:=dops;
end;
end;
writeln(s2);
writeln(news1);
readln
end.
Lapp
М
просьба использовать правильные теги (я исправил на этот раз) (code=pas и /code)



OliGan, тебе нужно прежде всего сделать функцию для выборки слова из строки (вот тут есть полезная инфа по этому делу: Разбиение на слова. Все способы. ). После этого все просто: проходишь по строке, берешь слово, проходишь по другой строке и сравниваешь слова. Если не совпало - печатаешь.
OliGan
Lapp, спасибо! все получилось. вот код программы, может пригодится кому

program stroki;
{$APPTYPE CONSOLE}

type stroka=string[25];

var
s1,s2:stroka;
news1,news2:array[1..15]of string;
n,m,i,b,j:byte;

begin
{ TODO -oUser -cConsole Main : Insert code here }
writeln('vvedite pervuyu stroku ');
readln(s1);
writeln('vvedite vtoruyu stroku ');
readln(s2);
i:=1;
n:=1;
while(i<=length(s1)) do begin
b:=i;
while(i<=length(s1)) and not(s1[i]=' ') do begin
inc(i);
end;
news1[n] := copy(s1, b, i-b);
inc(n);
inc(i);
end;
i:=1;
m:=1;
while(i<=length(s2)) do begin
b:=i;
while(i<=length(s2)) and not(s2[i]=' ') do begin
inc(i);
end;
news2[m] := copy(s2, b, i-b);
inc(m);
inc(i);
end;
for i := 1 to n do begin
if pos(news1[i],s2)=0 then
write(news1[i],' ');
end;
for j := 1 to m do begin
if pos(news2[j],s1)=0 then
write(news2[j],' ');
end;
readln
end.

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.