Полагаю, код должен выглядеть как-то так: read(x);
if abs(x) > 1 then
y := 1 / (abs(x) + 1)
else
y := x * 2;
writeln Ты абсолютно бессмысленно вводишь y, абсолютно бессмысленно присваиваешь x значение 4. И, судя по всему, не разобрался с приоритетами операций.
Но если +1 и -1 действительно стоят не в знаменателе, а после деления, то: read(x);
if x > 1 then
y := 1 / x + 1
else if x < 1 then
y := 1 / x - 1
else
y := x * 2;
writeln
Причина, по которой ваш код, вероятно, не работает или не дает ожидаемый результат, в том, что вы сразу же после считывания значений x и y присваиваете переменной x значение 4. Это перезаписывает введенное пользователем значение. Удалите строку `x:=4;`, и ваш код будет корректно обрабатывать введенные значения.
Вот исправленный код:
```
var
x, y: real;
begin
read(x, y);
if (x >= -1) and (x <= 1) then
y := x * 2
else if (x < -1) then
y := -1 / x - 1
else if (x > 1) then
y := 1 / x + 1;