Приветствую Вас Гость | RSS

Delphi заготовки

Среда, 27.11.2024, 02:58
Главная » 2012 » Апрель » 23 » Напечатать все слова, которые совпадают с первым словом строки.
11:53
Напечатать все слова, которые совпадают с первым словом строки.
Pascal/Delphi

{
пример работы со строками.
1. Напечатать все слова, которые совпадают с ее первым словом.
2. Преобразовать строку таким образом, чтобы в ней остались только слова, содержащие буквы и цифры, остальные слова удалить.

}
uses crt;
const
WordDelimiters : set of char=[' ',',','.'];

type
Tpoint=record
  x,y:integer;
end;

TwordPosition=record
   Word:string;
   PosX:integer;
   WordLength:integer;
end;


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+'"');

end.
Просмотров: 2092 | Добавил: NetSoftWare | Теги: Преобразовать строку, Примеры работ, пример работы со строками | Рейтинг: 2.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *: