Найти сумму элементов списка. Вывести на экран последовательность и результаты вычислений.
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.