Последовательность целых чисел заносится в файл. Прочитать из файла последовательность и записать в память в виде линейного списка — Pascal(Паскаль)

Найти сумму элементов списка. Вывести на экран последовательность и результаты вычислений.

Program PascalGuru;

type
  link = ^kom;

  kom = record
    ini: integer;
    next: link;
  end;

var
  pn: link; { описание переменных самой программы }
  arg, j: integer;
  f: text;

  { -------------------------------------------------- }
procedure add(var n: link; x, num: integer);
{ процедура добавляет значение "х" в список "n" на позицию "num" }
var
  neo, ind: link;
  i: integer;
begin
  new(neo);
  neo^.ini := x;
  if n = nil then
  begin
    n := neo;
    neo^.next := nil;
  end
  else if num = 1 then
  begin
    neo^.next := n;
    n := neo;
  end
  else
  begin
    i := 0;
    ind := n;
    while (i <> num - 2) and (ind^.next <> nil) do
    begin
      i := i + 1;
      ind := ind^.next;
    end;
    neo^.next := ind^.next;
    ind^.next := neo;
  end;
end; { ---add }

{ -------------------------------------------------- }
procedure veiw(n: link);
{ процедура выводит линейный список n на экран + просчитывает сумму }
var
  ind: link;
  i: integer;
  summa: integer;
begin
  ind := n;
  i := 0;
  summa := 0; { обнуляем сумму }
  if ind = nil then
    writeln('List is empty')
  else
  begin
    writeln;
    writeln('Spisok:');
    while ind <> nil do
    begin
      i := i + 1;
      writeln(i, ')  ', ind^.ini); { выводит текущий эл-т на экран }
      summa := summa + ind^.ini; { текущий эл-т добавляем к сумме }
      ind := ind^.next; { переходим к след. эл-ту списка }
    end;
  end;
  writeln;
  writeln('Summa: ', summa); { выводим общую сумму на экран }
end; { ---veiw }
{ ------------------------------------------- }

begin { ******************САМА ПРОГРАММА**************************** }
  assign(f, 'file_spisok.txt');
  reset(f); { подключаем файл для чтения }
  pn := nil; { обнуляем линейный список }

  j := 0; { обнуляем счётчик эл-ов списка }
  while not eof(f) do { пока не конец файла }
  begin
    inc(j); { увеличиваем счётчик на +1 }
    readln(f, arg); { считываем очередное число с файла }
    add(pn, arg, j); { добавляем это число в линйный список }
  end;

  veiw(pn); { выводи список и сумму на экран }

  close(f); { закрываем файл }

end.

Leave a Comment

75 − 69 =