В коде слегка смущает вот это место
if (c <> 0) and (x <> (d/c) * (-1)) then...
Не знаю, как работает компилятор паскаля, но многие языки на этом месте завалились бы при d=c. Если c <> 0, то это не значит, что второе условие не будет проверяться. Во многих современных языках есть специальные операторы, которые позволяют указать, что при ложности первого условия, второе не проверяется, а при обычном and это не так. Если "тест номер 10" как раз такой случай, просто измени двойное условие на вложенное.
Что-то типа этого
if (c <> 0) then (if (x <> (d/c) * (-1)) then...
Паскаля не знаю, так что, если что - синтаксис сам поправь.