Не могу понять свою ошибку - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Условие:
Вступительные испытания состоят из трех экзаменов: математика (максимальный балл – 10), информатика (максимальный балл – 10), русский (максимальный балл – 5). На вход программе подаются сведения о сдаче этих экзаменов абитуриентами. В первой строке вводится количество абитуриентов N, во второй – количество мест K на которые эти абитуриенты претендуют. Каждая из следующих N строк имеют следующий формат: <Фамилия> <оценка1> <оценка2> <оценка3>, где <Фамилия> – строка, состоящая не более, чем из 20 символов, оценки – числа от 0 до максимальной оценки по предмету соответственно (ноль ставится в случае, если экзамен не сдавался). Пример входных строк: Иванов 8 9 3 Петров 2 0 0 Требуется написать эффективную по используемой памяти программу, которая определяла бы по имеющимся данным проходной балл (количество студентов, набравших, как минимум такой балл, и не получивших ни одной неудовлетворительной оценки, не должно превышать K), либо выводила бы сообщение, что все сдали экзамены слишком хорошо, и, соответственно, проходной балл определить нельзя. Неудовлетворительной считается оценка меньше 3 по любому предмету.
После ввода второго абитура пишет : PABCSystem.pas(4529) : Ошибка времени выполнения: Входная строка имела неверный формат. Хотя первую же съел и не ругался
Знаю, что код каличный. Не ругайтесь сильно. Спасибо

Решение задачи: «Не могу понять свою ошибку»

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.

Объяснение кода листинга программы

  1. Переменная N инициализируется значением, прочитанным с помощью функции ReadLnInteger.
  2. Переменная K инициализируется значением, прочитанным с помощью функции ReadLnInteger.
  3. Запускается цикл for, который проходит от 1 до N.
  4. В каждой итерации цикла, в переменной a считывается строка, разделенная на слова с помощью функции ReadLnString.ToWords(' ').
  5. Выводится фамилия, полученная из первого элемента массива a, с помощью функции WriteLn('Фамилия: ' + a[0]).
  6. Выводится значение первого балла, полученного из второго элемента массива a, с помощью функции Write('1 балл = ', StrToInt(a[1])).
  7. Выводится значение второго балла, полученного из третьего элемента массива a, с помощью функции Write('2 балл = ', StrToInt(a[2])).
  8. Выводится значение третьего балла, полученного из четвертого элемента массива a, с помощью функции Write('3 балл = ', StrToInt(a[3])).
  9. Цикл завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы