Создание МЕНЮ с помощью типизированных файлов

Написать программу, которая организует работу с типизированными файлами (2 файла типа реал). У меню должны быть опции: Создание типизированных файлов, Добавление данных в файлы, Просмотр данных из файлов, Выход из программы.

Я примерно набросал код. Посмотрите.

var f,f1: file of real; k: integer; procedure CreateFile(f,f1: file of real); begin assign(f,‘res.dat’); assign(f1,‘res2.dat’); rewrite(f); rewrite(f1); end; procedure Addfile(f,f1:file of real); x:real; i:integer; for…x:=random(101)…write(f,x)… … … while true do begin writeln(‘Menu’); writeln('Создание файлов) writeln(Добавление в файлы) writeln(Просмотр) writeln(Выход) read(k); case k of 1: Createfile(f,f1); … 3… Printfile(f,f1); 5: Exit; end; end.

Правильно ли? И как выполняется вызов процедуры?. Я пишу 1 и у меня вызывает процедуру Крит, и там выполняется тело процедуры и конечный результат идет к-> Createfile(f,f1); -< тому что в скобках тут?

При вводе “1” вызывается процедура “procedure Createfile(f, f1: file of real);” и внутрь неё для работы передаются два аргумента типа “file of real”. Они передаются на вход подпрограммы, а результата у процедуры нет, это просто набор команд для выполнения. Вот скажем, если бы у вас была функция, то было бы что-то типа вот этого:


function f(x: double): Double;
begin
   Result := x*x + 5*x - 3;
end;

begin
   var k: double := f(3.14);
end.

В данном случаем в переменной k хранилось бы значение 22,5596. Вызывается функция “f(x: double)”, на вход которой посылается значение “x” типа “double”, она “что-то” делает и обязана выдать результат типа “Double” через спец. переменную “Result” (А ещё можно через имя функции, например “f := xx + 5x - 3;”, - это тоже считается результирующей переменной). Следует учитывать, что внутри функции или процедуры можно вызывать саму же себя, это называется рекурсией, чаще происходит именно с функциями.

То есть я передаю при вызове в Файл две перменных типа Файл? то есть рекурсию. В общей сложности код-то правильный?

При вызове вы передаёте переменные не в файл, а в процедуру. А код проверять надо, сейчас протестируем) Рекурсия - это вызов подпрограммы из самой себя! Например:

function factorial(N: integer): longint; 
begin 
   if (N = 0)
   then factorial := 1 
   else factorial := factorial(N - 1) * N;
end;

Можно, пожалуйста, ваш полный код программы. А я пока свой напишу.

Program1.pas (2,4 КБ) Собственно вот мой код, он полностью рабочий.

да, благодарствую!)

Да не за что) Удачи в изучении :wink: