Найти середину отрезка [0,6] . Использовать ограниченный тип данных
Не получается что бы можно было вести цифру от 0 до 6. Что бы он считал только в этом отрезке.
Program pr3;
var a: 0..6;
var b: real;
Begin
writeln ('Введите длину отрезка');
readln (a);
b:=a/2;
write (b);
end.
В итоге могу хоть 50 ввести и он посчитает.
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
К сожалению, компилятор отловит только попытку назначения константы переменной subrange типа, а введённое значение можно сделать каким угодно (то же будет и, скажем, с типом byte), т.к. под капотом работает процедура ReadLong без валидации субдиапазона.
Поэтому только проверять значение и повторять ввод. При этом учитывайте, что значение обрежется до ShortInt, и, например, 257 пройдет фильтр как значение 1.
repeat
writeln ('Введите длину отрезка');
readln (a);
until a in [0..6];