Другие языки программирования и технологии

Помогите найти ошибки в коде (паскаль)

Помогите найти ошибкив коде программы (паскаль)

Задание:
Разработать программу, обеспечивающую сортировки входного файла методом обмена с подсчетом количества сравнений и перестановок. Входной файл текстовый по одному числу в строке. Максимальное количество чисел 1000. Диапазон допустимых значений от 0 до 65000. Результирующий файл текстовый. В первом записывается количество сравнений, во втором - перестановок, с третьего и до конца файла - отсортированная последовательность имена входного и результирующего файла задается соответственно как первый и второй позиционный параметры командной строки.

И вот сам код:

PROGRAM 1;
USES CRT;
VAR
input_massiv:ARRAY[0..999] OF real;
compare_count,finded_count:integer;

FUNCTION RANDOM_FILE(file_name:string):integer;
VAR
i:integer;
f1:FILE;
BEGIN
randomize;
ASSIGN(f1,file_name)
REWRITE(f1);
FOR i:=0 TO 999 DO WRITELN(f1,random(65000));
CLOSE(f1);
RANDOM_FILE:=1;
END;

FUNCTION READ_FILE(file_name:string):integer
VAR
i:integer;
f1:FILE;
BEGIN
ASSIGN(f1,file_name);
RESET(f1);
i:=0;
WHILE(EOF(f1)=false) do
BEGIN
readln(f1,input_massiv);
i:=i+1;
END;
CLOSE(f1);
READ_FILE:=i-1;
END;

FUNCTION SORT_MASSIV(count:integer):integer;
VAR
key1:bool;
i:integer;
min_max:real;
BEGIN
compare_count:=0;
finded_count:=0;
key:=true;
WHILE(key=true)DO
BEGIN
key:=false;
FOR i:=0 TO count-1 do
BEGIN
compare_count:=compare_count+1;
IF(input_massiv>input_massiv[i+1])THEN
BEGIN
finded_count:=finded_count+1;
key:=true;
min_max=input_massiv;
input_massiv:=input_massiv[i+1];
input_massiv[i+1]:=min_max;
END;
END;
END;
SORT_MASSIV:=count;
END;

FUNCTION SAVE_FILE(file_name:string;count:integer)
VAR
i:integer;
f1:FILE;
BEGIN
ASSIGN(f1,file_name);
REWRITE(f1);
WRITELN(f1,compare_count);
WRITELN(f1,"-----------------");
WRITELN(f1,finded_count);
WRITELN(f1,"-----------------");
FOR i:=0 TO count DO writeln(f1,input_massiv);
CLOSE(f1);

END;

BEGIN
RANDOM_FILE(PARAMSTR(1));
SAVE_FILE(PARAMSTR(2),SORT_MASSIV(READ_FILE(PARAMSTR(1))));
END.
PROGRAM P1; { PROGRAM 1 }
VAR
input_massiv:ARRAY[0..999] OF real;
compare_count,finded_count:longint; { compare_count,finded_count: integer; }

FUNCTION RANDOM_FILE(file_name:string):integer;
VAR
i:integer;
f1: text; { f1: FILE; }
BEGIN
randomize;
ASSIGN(f1,file_name); { ASSIGN(f1,file_name) }
REWRITE(f1);
FOR i:=0 TO 999 DO WRITELN(f1,random(65000));
CLOSE(f1);
RANDOM_FILE:=1;
END;

FUNCTION READ_FILE(file_name:string):integer; { FUNCTION READ_FILE(file_name:string):integer }
VAR
i:integer;
f1: text; { f1:FILE; }
BEGIN
ASSIGN(f1,file_name);
RESET(f1);
i:=0;
WHILE(EOF(f1)=false) do
BEGIN
readln(f1,input_massiv[ i]); { readln(f1,input_massiv); }
i:=i+1;
END;
CLOSE(f1);
READ_FILE:=i-1;
END;

FUNCTION SORT_MASSIV(count:integer):integer;
VAR
key: boolean; { key1:bool; }
i:integer;
min_max:real;
BEGIN
compare_count:=0;
finded_count:=0;
key:=true;
WHILE(key=true)DO
BEGIN
key:=false; { key:=false; }
FOR i:=0 TO count-1 do
BEGIN
compare_count:=compare_count+1;
IF(input_massiv[ i]>input_massiv[i+1])THEN { IF(input_massiv>input_massiv[i+1])THEN }
BEGIN
finded_count:=finded_count+1;
key:=true;
min_max:=input_massiv[ i]; { min_max=input_massiv; }
input_massiv[ i] := input_massiv[i+1]; { input_massiv:=input_massiv[i+1]; }
input_massiv[i+1]:=min_max;
END;
END;
END;
SORT_MASSIV:=count;
END;

procedure SAVE_FILE(file_name:string;count:integer); { FUNCTION SAVE_FILE(file_name:string;count:integer) }
VAR
i:integer;
f1:text; { f1:FILE; }
BEGIN
ASSIGN(f1,file_name);
REWRITE(f1);
WRITELN(f1,compare_count);
WRITELN(f1,finded_count);
FOR i:=0 TO count DO writeln(f1,input_massiv[ i]:0:0);
CLOSE(f1);

END;

BEGIN
RANDOM_FILE(PARAMSTR(1));
SAVE_FILE(PARAMSTR(2),SORT_MASSIV(READ_FILE(PARAMSTR(1))));
END.

1) Программа по условию задачи не должна сама создавать исходный файл, а только читать заранее подготовленный.

2) Программа не учитывает условие задачи "Максимальное количество чисел 1000", написано так, как будто их всегда 1000, а на самом деле в исходном файле может быть и меньше чисел.
Zolotarenko56
Zolotarenko56
86 601
Лучший ответ