Ограничение чисел вводимых в массив - Free Pascal
Формулировка задачи:
Есть массив. Необходимо ограничить ввод чисел в него. Я создал свой тип данных. При вводе неверных значений программа вылетает. Free pascal выдаёт:"exitcode = 201". Вопрос: Есть ли процедура, подобная IOResult, которая будет возвращать какое-либо значение, при введении неверного значения? Каким образом можно ограничить вводимые числа в массив?
program pr_lr8; uses crt; type marks = 1..5; student = record surname:string[20]; group:string[8]; usp:array[1..5] of marks; summa:real; end; var s, s1:student; f:file of student; i, num:byte; procedure create; var c:char; begin seek(f,filesize(f)); writeln('Для выхода введите "*"'); while true do begin write('Введите фамилию и инициалы студента: '); readln(s.surname); if s.surname = '*' then break; if (s.surname = '') then writeln('Ошибка ввода') else begin write('Введите группу: '); readln(s.group); if (s.group = '') then writeln('Ошибка ввода') else begin write('Введите оценки: '); for i := 1 to 5 do begin read(s.usp[i]); s.summa := s.summa + s.usp[i]; end; s.summa := s.summa / 5; readln; write(f,s); s.summa := 0; end; end; end; clrscr; end; {--------------------------------------------------------------}
Решение задачи: «Ограничение чисел вводимых в массив»
textual
Листинг программы
write('Введите оценки: '); for i := 1 to 5 do begin repeat read(s.usp[i]); until s.usp[i] in [2..5]; s.summa := s.summa + s.usp[i]; end;
Объяснение кода листинга программы
- Вводится массив usp размером 5.
- Пользователю предлагается ввести оценки от 2 до 5.
- Цикл for i := 1 to 5 выполняет пять проходов.
- На каждом проходе цикла выполняется операция repeat-until, которая продолжается до тех пор, пока не будет введено число от 2 до 5.
- Если число соответствует условию, то оно сохраняется в массиве usp.
- После окончания цикла суммируются все числа в массиве usp и сохраняются в переменной summa.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д