Найти порядковый номер самого длинного слова среди введенных литерных величин - C#
Формулировка задачи:
УСЛОВИЕ:
Дан текстовый файл Inlet.in, содержащий строко-
вые величины S.
Найти порядковый номер самого длинного слова сре-
ди введенных литерных величин. Если этого сделать
нельзя, значением результата положить –1.
Определение. Слово - это последовательность
символов литерной величины, не содержащая в
себе символ пробела.
Ввод (файл Inlet.in):
Строковая величина
Строковая величина
. . .
Строковая величина
Вывод (файл Outlet.out):
Порядковый номер длинного
слова текста или -1
ВОТ ПРИМЕРНЫЙ КОД В ДЕЛФИ,НО ОН НЕ СОВСЕМ ПРАВИЛЬНЫЙ ,КАК СКАЗАЛ ПРЕПОДАВАТЕЛЬ
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var s,maxslovo, slovo:string;
first, second: text;
n,i,k:integer;
Procedure PassWhiteSpace(var i:integer);
begin
while (i<=Length(s)) and (s[i]=' ') do
begin
inc(i);
end;
end;
Procedure getword(var i,n: integer; out slovo:string);
begin
while (i<=Length(s)) and (s[i]<>' ') do
begin
slovo:=slovo+s[i];
inc(i);
end;
inc(n);
end;
begin
{ TODO -oUser -cConsole Main : Insert code here }
assign(first,'Inlet.in');
assign(second,'Outlet.out');
reset(first);
rewrite(second);
maxslovo:='';
n:=0;
while not eof(first) do
begin
readln(first,s);
i:=1;
while i<=length(s) do
begin
passwhitespace(i);
getword(i,n,slovo);
if length(maxslovo)<length(slovo) then
begin
maxslovo:=slovo;
k:=n;
end;
end;
end;
write(second,k);
close(first);
close(second);
end.Решение задачи: «Найти порядковый номер самого длинного слова среди введенных литерных величин»
textual
Листинг программы
static void Main()
{
//адрес файлов естественно на свой
string[] s = File.ReadAllText(@"E:\Inlet.in").Split(' ','\n').ToArray(); //пишем слова в массив
int s1;
if (s.GroupBy(v => v.Length).Count() <= 2) s1 = -2; //если длина всех слов одинакова
else s1 = s.Aggregate(0, (x, v) => v != s.Where(b => b.Length == s.Select(c => c.Length).Max()).First() ? x + 1 : x); //вычисляем индекс
File.WriteAllText(@"E:\Outlet.out", String.Format("{0}", s1 + 1)); //пишем файл
}