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

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

code: #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.      
Поделиться:

Похожие статьи: