Главная » 2012»Апрель»23 » Напечатать все слова, которые совпадают с первым словом строки.
11:53
Напечатать все слова, которые совпадают с первым словом строки.
Pascal/Delphi
{ пример работы со строками. 1. Напечатать все слова, которые совпадают с ее первым словом. 2. Преобразовать строку таким образом, чтобы в ней остались только слова, содержащие буквы и цифры, остальные слова удалить.
} uses crt; const WordDelimiters : set of char=[' ',',','.'];
Tdocument=record WordList:array [0..255] of TwordPosition; WordListCount:Integer; end; var d:Tdocument; Procedure CreateDocument(var Value:Tdocument; BodyText:string;Len:integer); var x:Integer; s2:string; rs:Tpoint; s:string; begin s:=bodytext; Value.WordListCount:=0; rs.X:=1; rs.y:=0; for X:=1 to length(s) do begin if (ord(s[x])<33) or (s[x] in WordDelimiters) or (x=length(s)) then begin if not ((s[x] in WordDelimiters) or (ord(s[x])<33)) then s2:=s2+s[x]; if (s2<>'') and ((len=0) or (length(s2)>=len)) then begin rs.y:=x-rs.X;
Value.WordListCount:=Value.WordListCount+1; value.WordList[Value.WordListCount-1].Word:=s2; value.WordList[Value.WordListCount-1].PosX:=rs.x; value.WordList[Value.WordListCount-1].WordLength:=length(s2); end; s2:=''; end else begin if s2='' then rs.X:=x; s2:=s2+s[x]; end;
end; end;
Function iSSimovl(SText:string;SimvolList:string):integer; var y,X:integer; begin result:=0; for X:=1 to length(SimvolList) do for y:=1 to length(SText) do if SText[y]=SimvolList[x] then begin result:=x; exit; end; end;
var s:string; x:integer; begin clrscr; s:='Строки. Напечатать все слова, которые совпадают с ее первым словом.'+ 'Преобразовать строку таким образом1, чтобы2 в ней остались только слова, содержащие буквы и цифры, остальные слова удалить.'; writeln('Исходая строка'); Writeln(s); writeln('----------------------------'); Writeln('1. Напечатать все слова, которые совпадают с ее первым словом'); d.WordListCount:=0; CreateDocument(d,s,0); // создаем массив слов writeln('----------------------------'); for X:=1 to d.WordListCount-1 do begin if d.WordList[x].Word=d.WordList[0].Word then Writeln(d.WordList[x].Word); end; writeln('----------------------------'); Writeln('2.Преобразовать строку таким образом, чтобы в ней остались только слова, содержащие буквы и цифры, остальные слова удалить.'); writeln('----------------------------'); for X:=d.WordListCount downto 0 do begin if iSSimovl(d.WordList[x].Word,'0123456789')>-1 then else delete(s,d.WordList[x].posx,d.WordList[x].WordLength+1); end;
while pos(' ',s)>0 do delete(s,pos(' ',s),1); // удалим пробелы Writeln('2получена строка "'+s+'"');