Собственно, остальное всё более ли менее, вот только...
1. Лишние переменные. Зачем нужна переменная otvet, да еще типа Char? Напомню, что "Char" - это тип "Символ", т.е. такая переменная может принимать значение ТОЛЬКО ОДНОГО символа, например "A", "f", "4", "+" и т.п. А если Вы хотите управлять сообщением о результате не через прямой вывод, а через переменную, то тип такой переменной следует объявить String. Только в данном случае это не нужно - вполне нормально выводить сообщения напрямую, как у Вас и сделано.
2. Внешний и внутренний радиусы кольца целесообразно либо не задавать вовсе и работать с их числовыми значениями, либо задать в виде констант. Этот второй вариант мне представляется предпочтительным. Программа становится "универсальнее", т.к. значения констант легче (если захочется) поменять, чем редактировать условный оператор.
3. В построении условного оператора мой коллега AlexZir, как мне кажется, несколько перемудрил: Паскаль допускает нестрогие неравенства, а потому связка "or" там лишняя. Кроме того, удобнее работать с самими величинами расстояний и радиусов, а не с их квадратами.
4. Разумно программу зациклить, так, чтобы была возможность вводить без перезапуска последовательность пар координат точек. Выход из цикла можно устроить когда, например, будут введены нулевые координаты, причем обе сразу.
Исходя из всего этого, представлю вариант решения такой, какой я бы сделал. Сразу отмечу, что с кириллицей у меня некий напряг, поэтому я ее стараюсь не применять. Но это сами легко поправите.
Код:
Const
Rb=10.0;
Rm=5.0;
Var
x,y,v:real;
Begin
Writeln('Point (0;0) quits');
Repeat
write('X= ');
readln(x);
write('Y= ');
readln(y);
if (x<>0) or (y<>0) then
begin
v:=Sqrt(x*x+y*y);
if (v>=Rm) and (v<=Rb) then writeln('YES!') else writeln('NO!');
end;
Until ((x=0) and (y=0));
end.