Ошибка в коде "неверное число параметров процедуры" - PascalABC.NET
Формулировка задачи:
Выдает ошибку в 29 строке: "неверное число параметров процедуры". Помогите пожалуйста с этой процедурой. Открывал через 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.
Объяснение кода листинга программы
- Название файла с данными -
file.txt
- Описание стека - тип данных PIntStack и TIntStack
- Инициализация стека - процедура Init
- Завершение работы со стеком - процедура Done
- Проталкивание элемента в стек - процедура Push
- Выталкивание элемента из стека - функция Pop
- Привязка переменной к имени - переменная файла F
- Открытие файла - операция Reset(F)
- Проверка открытия файла - обработка исключения
- Создание пустого стека - процедура Init(S)
- Заталкивание элементов файла в стек - цикл while и операция Push(X, S)
- Закрытие файла - операция Close(F)
- Подсчет суммы и количества элементов в стеке - переменные Z и Y
- Вспомогательная переменная X для хранения прочитанного значения из файла
- Подсчет среднего арифметического - операция Y div Z
- Вывод результата на экран - WriteLn('Среднее арифметическое элементов файла: ', X)
- Удаление стека - процедура Done(S)
- Файл
file.txt
не найден - вывод сообщения об ошибке - Ошибка в коде - неверное число параметров процедуры (в данном случае, при вызове функции Pop)
- Ошибка в коде - возможное отсутствие освобождения памяти после вызова операции New(P)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д