ну не совсем вопрос, а больше прошу помощи по своему коду, собственно код рабочий, хотелось бы знать ваше мнение по тому, как он написан и что бы указали на недочеты, да бы в будущем такого не повторять!!программа выполняет следующее:

, входящие данные, собственно сам фаил in.txt:

Заранее спасибо!
1. Комментарии, комментарии и еще раз комментарии! Через год будешь долго и мучительно вспоминать, что это за прога и что она делает.
2. Имена переменных - для небольших програм нормально, но для чего-то большего желательно писать не a,b а что-то вроде LeftMargin, RightMargin - по тем же причинам.
3. Отступы - здесь, видимо, съелись ответами, но напомню - содержимое блоков желательно сдвигать на 2 пробела вправо; и между функциями желательно ставить пустую строку.
4. Что это такое:
for i:=1 to 4 do begin
read(inf,n);
y:=n;
end;
а? массиву присваевается число? Лучше тогда for i:=1 to 4 do read(inf,y);
ну и размер y чего такой большой? Зачем 101 элемент?
И вообще, правильнее было бы читать по одному значению, т. е. 4 раза read. Массивы нужны для однородных величин.
5. Обнуление - филдмаус в общем случае прав, но простые (не динамические) переменные паскаль обнуляет сам.
6. Видимо, что-то скушалось между a и =e, т. к. иначе вообще чушь выходит.
Если не влом, вышли мне тоже код.
7. А где сортировка результатов? И пробел после числа в readln не обязательно ставить, все равно новая строка.
8. Файлы очень желательно открывать и закрывать только по необходимости. Дойдешь до потоков - поймешь ))
Итак.. .
У объявлен как масссив. Тогда y:=n; работать не будет! Нужно У: =n
))))))
Мдя.... ОНИ удаляют не угодные им символы.... Блин, а как тогда писать? Что-то типа - "У: =n"?
Нафиг всё! Думаю, что Вы поняли что я хотел сказать, а я уже понял что ошибка не у Вас, а в системе! ))))
Но.. . почему h:=y[3]; прокатывает? !
Я нашёл ошибку. Серьёзную.
В строчке c:=((a1+b1)/2); Используются неинициалированные значения a1,b1. До момента их использования, им не присваивается никаких значений.