Найти ошибку

программирование pascal паскаль

Входные данные имеют вид:
1) число (кол-во строк)
2. - n) (фамилия-должность-стаж-оклад-премия) - определённое в первой строке число раз. Нужно посчитать среднюю зарплату тех, чей стаж выше среднего.
Вот такая программка.
program C5_25b;

type
employ = record
exp: byte; // Для стажа
money: longint; // Деньги
end;

var
t, i, N: integer;
c: char;
employee: array [1..1000] of employ;
tempBonus: longint; // Премия
averageExp, averageMoney: real; //Средние опыт и деньги

begin
averageExp := 0;
readln(N);
for i := 1 to N do // Считывание всей информации построчно
begin
t:=0;
repeat // Хочу пропустить первые два слова
begin
read(c);
if c = ' ' then t := t + 1; // Второй пробел - выход из цикла и считывание нужной инфы
end;
until j < 2;
read(employee[i].exp); //ЗДЕСЬ ВЫДАЁТ ОШИБКУ <-----<-----<-------
read(employee[i].money);
readln(tempBonus);
employee[i].money := employee[i].money + tempBonus; // Оклад + премия = зарплата
averageExp := employee[i].exp + averageExp; // Суммируем весь стаж
end;

averageExp := averageExp / N; // и делим на количество рабочих.
averageMoney := 0;
t := 0;
for i := 1 to N do
if employee[i].exp > averageExp then // определение тех, чей опыт выше среднего
begin
averageMoney := employee[i].money + averageMoney;// суммируем зарплаты этих работников
t := t + 1; // и считаем их количество
end;
writeln(averageMoney / t) // выводим среднюю зарплату тех, чей опыт выше среднего = выполняем задание.
end.

------>Компилятор PascalABC.NET говорит:"Ошибка времени выполнения: Входная строка имела неверный формат."

Самое главное, что решение я уже делал, но с считыванием всей инфы (т.е. записывались в employ[]. фамилия и должность). А пропустить лишнюю инфу не получается. В чём проблема?

Примечание:
Опечатался. Разумеется "until t<2", а не j.

Примечание:
Для наглядности. Вот так задача выполняется со считыванием данных всех , включая "лишние".
type
employ = record
name: string[20];
job: string[15];
exp: byte;
money: longint;
end;

var
t, i, N: integer;
c: char;
employee: array [1..1000] of employ;
tempBonus: longint;
averageExp, averageMoney: real;

begin
averageExp := 0;
readln(N);
for i := 1 to N do // Считывание всей информации построчно
begin
employee[i].name := ''; // Обнуляем в каждом цикле только текущую строку.
employee[i].job := '';
read(c);
while c <> ' ' do // Считываем первое слово до пробела
begin
employee[i].name := employee[i].name + c;
read(c);
end;
read(c);
while c <> ' ' do // Второе слово до пробела
begin
employee[i].job := employee[i].job + c;
read(c);
end;
readln(employee[i].exp, employee[i].money, tempBonus); // И только здесь считываются значимые для задачи данные
employee[i].money := employee[i].money + tempBonus;
averageExp := employee[i].exp + averageExp;
end;

averageExp := averageExp / N;
averageMoney := 0;
t := 0;
for i := 1 to N do
if employee[i].exp > averageExp then
begin
averageMoney := employee[i].money + averageMoney;
t := t + 1;
end;
writeln(averageMoney / t)
end.

Тут всё работает. По-моему разница не велика.
Xabokar, а delete, я пока не знаю, как работает. Сейчас посмотрю-попробую.
Ответы:
все уже работает? если нет, попробуйте считать строку целиком, потом через delete(s,1,pos(' ',s)) два раза удалить первые два слова в ней.
цикл while выполняется до тех пор, пока условие истинно. во второй программе вы читаете символы, пока они не равны пробелу.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.