Ошибка Runtime error 201 at., во время выполнения программы - Free Pascal
Формулировка задачи:
Во время выполнения программы возникает ошибка: Runtime error 201 at... . Может кто подскажет что не так?
PROGRAM BooksLibrary(INPUT, OUTPUT); CONST N = 3; TYPE BookType = RECORD Author: STRING; Title: STRING; Publishing: STRING; Year: INTEGER; Requests: INTEGER END; ArrType = ARRAY OF BookType; PROCEDURE BookSort(VAR BS_Arr: ArrType); TYPE SortedType = (NoSorted, YesSorted); VAR Sorted: SortedType; Temp: BookType; J: INTEGER; BEGIN Sorted := YesSorted; REPEAT BEGIN FOR J := 0 TO N - 1 DO BEGIN IF BS_Arr[J].Requests > BS_Arr[J+1].Requests THEN BEGIN Temp := BS_Arr[J]; BS_Arr[J] := BS_Arr[J+1]; BS_Arr[J+1] := Temp; Sorted := NoSorted; END END END UNTIL (Sorted = NoSorted) END; VAR Arr: ArrType; I: INTEGER; Author, Title, Publishing: STRING; Year, Requests: INTEGER; BEGIN SETLENGTH(Arr, N); FOR I := 0 TO N - 1 DO BEGIN WRITE('Author: '); READLN(Author); Arr[I].Author := Author; WRITE('Title: '); READLN(Title); Arr[I].Title := Title; WRITE('Publishing: '); READLN(Publishing); Arr[I].Publishing := Publishing; WRITE('Year: '); READLN(Year); Arr[I].Year := Year; WRITE('Requests: '); READLN(Requests); Arr[I].Requests := Requests; END; BookSort(Arr); FOR I := 0 TO N - 1 DO BEGIN WRITELN('Author: ', Arr[I].Author); WRITELN('Title: ', Arr[I].Title); WRITELN('Publishing: ', Arr[I].Publishing); WRITELN('Year: ', Arr[I].Year); WRITELN('Requests: ', Arr[I].Requests); WRITELN; WRITELN; END END.
Решение задачи: «Ошибка Runtime error 201 at., во время выполнения программы»
textual
Листинг программы
PROGRAM BooksLibrary(INPUT, OUTPUT);//это вообще не нужно CONST N = 3; TYPE BookType = RECORD Author: STRING; Title: STRING; Publishing: STRING; Year: INTEGER; Requests: INTEGER END; ArrType = ARRAY OF BookType; PROCEDURE BookSort(VAR BS_Arr: ArrType); TYPE SortedType = (NoSorted, YesSorted); VAR Sorted: SortedType; Temp: BookType; J: INTEGER; BEGIN REPEAT Sorted := YesSorted; FOR J := 0 TO N - 2 DO//исправить IF BS_Arr[J].Requests > BS_Arr[J+1].Requests THEN BEGIN Sorted := NoSorted; Temp := BS_Arr[J]; BS_Arr[J] := BS_Arr[J+1]; BS_Arr[J+1] := Temp; END UNTIL (Sorted = YesSorted)//исправить END; VAR Arr: ArrType; I: INTEGER; Author, Title, Publishing: STRING; Year, Requests: INTEGER; BEGIN SETLENGTH(Arr, N); FOR I := 0 TO N - 1 DO BEGIN WRITE('Author: '); READLN(Author); Arr[I].Author := Author; WRITE('Title: '); READLN(Title); Arr[I].Title := Title; WRITE('Publishing: '); READLN(Publishing); Arr[I].Publishing := Publishing; WRITE('Year: '); READLN(Year); Arr[I].Year := Year; WRITE('Requests: '); READLN(Requests); Arr[I].Requests := Requests; END; BookSort(Arr); FOR I := 0 TO N - 1 DO BEGIN WRITELN('Author: ', Arr[I].Author); WRITELN('Title: ', Arr[I].Title); WRITELN('Publishing: ', Arr[I].Publishing); WRITELN('Year: ', Arr[I].Year); WRITELN('Requests: ', Arr[I].Requests); WRITELN; WRITELN; END; END.
Объяснение кода листинга программы
Список элементов кода:
- Объявление типов данных:
- BookType (тип записи с полями Author, Title, Publishing, Year, Requests)
- ArrType (массив типа BookType)
- SortedType (тип перечисления для сортировки)
- Temp (временная переменная типа BookType)
- J (переменная-счетчик для цикла)
- I (переменная-счетчик для цикла)
- Author, Title, Publishing, Year, Requests (переменные для ввода данных)
- Arr (массив для хранения данных о книгах)
- Процедура сортировки массива Arr по убыванию поля Requests:
- BookSort (принимает в качестве параметра массив Arr и не возвращает ничего)
- Sorted (переменная типа SortedType для хранения информации о том, отсортирован ли массив)
- Temp (временная переменная типа BookType)
- J (переменная-счетчик для цикла)
- Ввод данных о книгах:
- Чтение данных в цикле (для каждой книги)
- WRITE и READLN для вывода и чтения строк
- Заполнение полей массива Arr
- Вывод отсортированных данных о книгах:
- Вывод данных в цикле (для каждой книги)
- WRITELN для вывода строк
- Ошибка Runtime error 201:
- Ошибка может возникнуть при попытке чтения данных за пределами допустимого диапазона массива Arr (например, если введено больше 3 книг) Примечание: в коде присутствуют некоторые потенциальные проблемы, такие как отсутствие проверки на пустой ввод и отсутствие обработки ошибок при чтении данных.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д