Главная » 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;
консольный вариант приложения с выводом в дос окно на русском языке
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]));