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

Delphi заготовки

Понедельник, 13.05.2024, 01:51
Главная » 2012 » Май » 11 » Для каждой строки распечатайте слово наибольшей длины. Если их несколько, то распечатайте все
07:13
Для каждой строки распечатайте слово наибольшей длины. Если их несколько, то распечатайте все
Здравствуйте, подскажите пожалуйста как решать такую задачку?
"Пусть дан текстовый файл. Для каждой строки распечатайте слово наибольшей длины. Если их несколько, то распечатайте все."
Delphi 7


const
  wordchar : set of char = ['A'..'Z','a'..'z','0'..'9','А'..'Я','а'..'я','-']; // слово состосит из знаков латинского и русского алфавитов + цифры от 0 до 9 разделитель '-'

var s:string; // строка
    s2:string; // слово
    maxLenWord:integer; // длина максимального слова в строке
    row:integer; // счетчик строк
    L:integer; // длина строки
    x:integer; // счетчик для цикла по все длине строки

begin
form1.ListBox1.Items.Clear; // очищаем вывод результата
  for row:=0 to form1.Memo1.Lines.Count-1 do begin // цикл по строкам

      s:=form1.Memo1.Lines[row];
      if s<>'' then
      form1.ListBox1.Items.add('в строке №'+Inttostr(row)+' Самое длинное слово (слова)');
      L:=length(s);
      s2:='';
      maxLenWord:=-1;
      // поиск максимального по длине слова в строке S
        for x:=1 to l do begin
           if s[x] in wordchar then s2:=s2+s[x] // если символ входит в символы из которых может быть составленно слово то записываем его
           else begin
               if maxLenWord<Length(s2) then maxLenWord:=Length(s2); // если длина найденного слова больша длины предидущего слова то запомнить длину слова
              s2:='';
           end;
        end;

        for x:=1 to l do begin
           if s[x] in wordchar then s2:=s2+s[x] // если символ входит в символы из которых может быть составленно слово то записываем его
           else begin
               if maxLenWord=Length(s2) then ListBox1.Items.Add(s2); // если длина одинакова то выводим слово
              s2:='';
           end;
        end;

  end;
end;

/46_slova_vyvod_samogo_dlinnogo_slova_v_stroke.zip







консольный вариант  приложения с выводом в дос окно на русском языке


program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils,classes,Windows;

const
  wordchar : set of char = ['A'..'Z','a'..'z','0'..'9','А'..'Я','а'..'я','-']; // слово состосит из знаков латинского и русского алфавитов + цифры от 0 до 9 разделитель '-'


  Function WinToDos(const S: string):string;
var
  NewStr: string;
begin
  SetLength(NewStr, Length(S));
  Windows.CharToOem(PChar(S), PChar(NewStr));
  result:=NewStr;
end;


var s:string; // строка
    s2:string; // слово
    maxLenWord:integer; // длина максимального слова в строке
    row:integer; // счетчик строк
    L:integer; // длина строки
    x:integer; // счетчик для цикла по все длине строки
    result:TstringList;
    InutStringList:TstringList;
begin
  if fileage('File.txt')>0 then begin
  InutStringList.LoadFromFile('File.txt');
  result:=TstringList.Create;
  InutStringList:=TstringList.Create;
  for row:=0 to InutStringList.Count-1 do begin // цикл по строкам

      s:=InutStringList[row];
      if s<>'' then
      result.add('в строке №'+Inttostr(row)+' Самое длинное слово (слова)');
      L:=length(s);
      s2:='';
      maxLenWord:=-1;
      // поиск максимального по длине слова в строке S
        for x:=1 to l do begin
           if s[x] in wordchar then s2:=s2+s[x] // если символ входит в символы из которых может быть составленно слово то записываем его
           else begin
               if maxLenWord<Length(s2) then maxLenWord:=Length(s2); // если длина найденного слова больша длины предидущего слова то запомнить длину слова
              s2:='';
           end;
        end;

        for x:=1 to l do begin
           if s[x] in wordchar then s2:=s2+s[x] // если символ входит в символы из которых может быть составленно слово то записываем его
           else begin
               if maxLenWord=Length(s2) then result.Add(s2); // если длина одинакова то выводим слово
              s2:='';
           end;
        end;

  end;
  // вывод результата на экран
  for x:=1 to l do Writeln(WinToDos(result[x]));

 end else Writeln(WinToDos('Файл не найден '));


   readln;

end.


Просмотров: 1966 | Добавил: NetSoftWare | Рейтинг: 5.0/1
Всего комментариев: 1
1 NetSoftWare  
0

Имя *:
Email *:
Код *: