Ошибка в коде "неверное число параметров процедуры" - PascalABC.NET

Формулировка задачи:

Выдает ошибку в 29 строке: "неверное число параметров процедуры". Помогите пожалуйста с этой процедурой. Открывал через PascalABC.NET
program StackDemo;
 
{ Название файла с данными }
const
 AFileName = 'file.txt';
 
{ Описание стека }
type
 PIntStack = ^TIntStack;
 TIntStack = record
   Data: Integer;
   Next: PIntStack;
 end;
 
{ Инициализация стека }
procedure Init(var AStack: PIntStack);
begin
 AStack := nil;
end;
 
{ Завершение работы со стеком }
procedure Done(var AStack: PIntStack);
var
 P: PIntStack;
begin
 while (AStack <> nil) do
 begin
   P := AStack^.Next;
   Delete(AStack);
   AStack := P;
 end;
end;
 
{ Проталкивание элемента в стек }
procedure Push(AData: Integer;var AStack: PIntStack);
var
 P: PIntStack;
begin
 P := nil;
 New(P);
 if (P = nil) then Exit;
 P^.Data := AData;
 P^.Next := AStack;
 AStack := P;
end;
 
{ Выталкивание элемента из стека }
function Pop(var AData: Integer; var AStack: PIntStack): Boolean;
var
 P: PIntStack;
begin
 if (AStack = nil) then
 begin
   Pop := False;
   Exit;
 end;
 P := AStack^.Next;
 AData := AStack^.Data;
 Delete(AStack);
 AStack := P;
 Pop := True;
end;
 
var
 F: file of Integer; { переменная файла }
 S: Stack;           { переменная стека }
 X, Y, Z: Integer;   { временные переменные для работы }
begin
 { Привязка переменной к имени }
 Assign(F, AFileName);
 { Отключение встроенной проверки Паскаля }
 {$I-}
 { Открытие файла }
 Reset(F);
 { Включение встроенной проверки Паскаля }
 {$I+}
 { Проверка прошло ли открытие файла успешно }
 if (IOResult <> 0) then
 begin
   WriteLn('Не могу открыть файл!');
   Halt(0);
 end;
 { Создание пустого стека }
 Init(S);
 { Заталкивание элементов файла в стек }
 while not Eof(F) do
 begin
   Read(F, X);
   Push(X, S);    
 end;
 { Закрытие файла }
 Close(F);
 { Подсчет суммы и количества элементов в стеке }
 Z := 0;
 Y := 0;
 while Pop(X, S) do
 begin
   Y := Y + X;
   Z := Z + 1;
 end;
 { Собственно расчет среднего арифметического }
 { Считал в целочисленном варианте, хотя это не принципиально }
 X := Y div Z;
 WriteLn('Среднее арифметическое элементов файла: ', X);
 { Удаление стека }
 { Конкретно в этой проге это вобщем-то не нужно, }
 { Но на всякий случай - чтобы препод проперся:) }
 Done(S);
end.

Код к задаче: «Ошибка в коде "неверное число параметров процедуры" - PascalABC.NET»

textual
program StackDemo;
 
{ Название файла с данными }
const
  AFileName = 'file.txt';
 
{ Описание стека }
type
  PIntStack = ^TIntStack;
  TIntStack = record
    Data: Integer;
    Next: PIntStack;
  end;
 
{ Инициализация стека }
procedure Init(var AStack: PIntStack);
begin
  AStack := nil;
end;
 
{ Завершение работы со стеком }
procedure Done(var AStack: PIntStack);
var
  P: PIntStack;
begin
  while (AStack <> nil) do
  begin
    P := AStack^.Next;
    dispose(AStack);
    AStack := P;
  end;
end;
 
{ Проталкивание элемента в стек }
procedure Push(AData: Integer; var AStack: PIntStack);
var
  P: PIntStack;
begin
  P := nil;
  New(P);
  if (P = nil) then Exit;
  P^.Data := AData;
  P^.Next := AStack;
  AStack := P;
end;
 
{ Выталкивание элемента из стека }
function Pop(var AData: Integer; var AStack: PIntStack): Boolean;
var
  P: PIntStack;
begin
  if (AStack = nil) then
  begin
    Pop := False;
    Exit;
  end;
  P := AStack^.Next;
  AData := AStack^.Data;
  dispose(AStack);
  AStack := P;
  Pop := True;
end;
 
var
  F: file of Integer; { переменная файла }
  S: PIntStack;           { переменная стека }
  X, Y, Z: Integer;   { временные переменные для работы }
 
begin
  { Привязка переменной к имени }
  Assign(F, AFileName);
  try
    { Открытие файла }
    Reset(F);
  { Проверка прошло ли открытие файла успешно }
  except
    WriteLn( 'Не могу открыть файл!');
    Halt(0);
  end;
  { Создание пустого стека }
  Init(S);
  { Заталкивание элементов файла в стек }
  while not Eof(F) do
  begin
    Read(F, X);
    Push(X, S);    
  end;
  { Закрытие файла }
  Close(F);
  { Подсчет суммы и количества элементов в стеке }
  Z := 0;
  Y := 0;
  while Pop(X, S) do
  begin
    Y := Y + X;
    Z := Z + 1;
  end;
  { Собственно расчет среднего арифметического }
  { Считал в целочисленном варианте, хотя это не принципиально }
  X := Y div Z;
  WriteLn('Среднее арифметическое элементов файла: ', X);
  { Удаление стека }
  { Конкретно в этой проге это вобщем-то не нужно, }
  { Но на всякий случай - чтобы препод проперся:) }
  Done(S);
end.

9   голосов, оценка 3.556 из 5


СОХРАНИТЬ ССЫЛКУ