Даны два предложения. Напечатать все слова, которые есть только в одном из их. помогите пожалуйста
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
11.12.2009 22:31
М
просьба использовать правильные теги (я исправил на этот раз) (code=pas и /code)
OliGan, тебе нужно прежде всего сделать функцию для выборки слова из строки (вот тут есть полезная инфа по этому делу: Разбиение на слова. Все способы. ). После этого все просто: проходишь по строке, берешь слово, проходишь по другой строке и сравниваешь слова. Если не совпало - печатаешь.
OliGan
13.12.2009 21:03
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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.