Найти сумму длин самой короткой и k-й от конца файла строк.

0 голосов
34 просмотров

Найти сумму длин самой короткой и k-й от конца файла строк.


Информатика (88 баллов) | 34 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

// PascalABC.NET 3.0, сборка 1128
begin
  var k:=ReadInteger('Укажите номер записи k:');
  var a:=ReadLines('T1.txt').Select(x->Length(x)).
         Where(x->x<>0).ToArray;
  var n:=a.Length;
  if k>n then Writeln('В файле записей меньше, чем ',k)
  else Writeln('Сумма равна ',a.Min+a[n-k+1])
end.

А теперь "школьный вариант"
// PascalABC.NET 3.0, сборка 1128
var
  t:text;
  min,l,m,n,k:integer;
  s:string;
begin
  k:=2; // вторая от конца запись
  Assign(t,'T1.txt'); Reset(t);
  min:=1000; m:=0;
  while not Eof(t) do begin
    ReadLn(t,s); Inc(m);
    l:=Length(s);
    if (l>0) and (l    end;
  Close(t); Reset(t);
  k:=m-k+1;
  if k<1 then Writeln('В файле нет стольких строк')<br>  else begin
    m:=0;
    while m<>k do begin Readln(t,s); Inc(m) end;
    Writeln('Сумма равна ',min+Length(s))
    end;
  Close(t)
end.

(142k баллов)
0

Поправлю перенос строк, а то некрасиво

0

var a:=ReadLines('T1.txt').Select(x->Length(x)).
Where(x->x<>0).ToArray;

0

а что если будет пустая строка в середине файла?

0

и почему пустая строка не считается минимальной?