Не могу понять свою ошибку - PascalABC.NET
Формулировка задачи:
Условие:
После ввода второго абитура пишет : PABCSystem.pas(4529) : Ошибка времени выполнения: Входная строка имела неверный формат. Хотя первую же съел и не ругался
Вступительные испытания состоят из трех экзаменов: математика (максимальный балл – 10), информатика (максимальный балл – 10), русский (максимальный балл – 5). На вход программе подаются сведения о сдаче этих экзаменов абитуриентами. В первой строке вводится количество абитуриентов N, во второй – количество мест K на которые эти абитуриенты претендуют. Каждая из следующих N строк имеют следующий формат: <Фамилия> <оценка1> <оценка2> <оценка3>, где <Фамилия> – строка, состоящая не более, чем из 20 символов, оценки – числа от 0 до максимальной оценки по предмету соответственно (ноль ставится в случае, если экзамен не сдавался). Пример входных строк:
Иванов 8 9 3
Петров 2 0 0
Требуется написать эффективную по используемой памяти программу, которая определяла бы по имеющимся данным проходной балл (количество студентов, набравших, как минимум такой балл, и не получивших ни одной неудовлетворительной оценки, не должно превышать K), либо выводила бы сообщение, что все сдали экзамены слишком хорошо, и, соответственно, проходной балл определить нельзя. Неудовлетворительной считается оценка меньше 3 по любому предмету.
Знаю, что код каличный. Не ругайтесь сильно. Спасибо
Решение задачи: «Не могу понять свою ошибку»
textual
Листинг программы
begin var(N,K):=(ReadLnInteger,ReadLnInteger); for var i := 1 to N do begin var a := ReadLnString.ToWords(' '); WriteLn('Фамилия: ' + a[0]); Write('1 балл = ', StrToInt(a[1])); Write('2 балл = ', StrToInt(a[2])); Write('3 балл = ', StrToInt(a[3])); end; end.
Объяснение кода листинга программы
- Переменная N инициализируется значением, прочитанным с помощью функции ReadLnInteger.
- Переменная K инициализируется значением, прочитанным с помощью функции ReadLnInteger.
- Запускается цикл for, который проходит от 1 до N.
- В каждой итерации цикла, в переменной a считывается строка, разделенная на слова с помощью функции ReadLnString.ToWords(' ').
- Выводится фамилия, полученная из первого элемента массива a, с помощью функции WriteLn('Фамилия: ' + a[0]).
- Выводится значение первого балла, полученного из второго элемента массива a, с помощью функции Write('1 балл = ', StrToInt(a[1])).
- Выводится значение второго балла, полученного из третьего элемента массива a, с помощью функции Write('2 балл = ', StrToInt(a[2])).
- Выводится значение третьего балла, полученного из четвертого элемента массива a, с помощью функции Write('3 балл = ', StrToInt(a[3])).
- Цикл завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д