Разработать консольную программу, получающую на вводе строку, значение которой может быть
равным одному из следующих вариантов:
Shortint SmallInt
Longint Longword
Int64 Byte Word
Cardinal
QWord.
Если введенная строка не соответствует ни одному из приведенных вариантов, вывести на экран слово Error и завершить работу программы.
Для введенного типа данных вывести на экран (1) нижную границу типа, (2) верхнюю границу типа, (3) размер типа в байтах. Заполнить переменную введенного типа случайным значением из диапазона от нижней до верхней границы типа. Вывести на экран (4) полученное значение, (5) предыдущее и (6) последующее значение. Вывести на экран (7) значения байтов, хранящих переменную введенного типа, в порядке их расположения в оперативной памяти.
Запрещается использовать константные значения характеристик типа. Значения всех характеристик типа следует вычислять, используя специальные функции для работы с порядковым типом данных (low, high и т.д.).
Пример вывода для типа Longint:
Исследуемый тип: Longint Нижняя граница: -2147483648 Верхняя граница: 2147483647 Байт на переменную: 4 Случайное значение: 818295054 Предыдущее значение: 818295053 Последующее значение: 818295055 Содержимое оперативной памяти: 14 49 198 48Для получения случайных значений из всего диапазона конкретного типа данных следует вывести корректную формулу, которую можно статистически проверить следующим образом:
// программа для статистической проверки вероятности появления случайных значений по конкретной формуле
// в данном случае формула содержит ошибку, благодаря которой не учитываются 3 возможных значения
// вариант решения представлен для типа shortint, однако полученные результаты будут реальны
// для любого целочисленного типа (integer, longint, smallint, int64)
{$R+} // обязательная проверка на выход из диапазона
var
i:longint;
x:array[shortint]of longint;
b:shortint;
begin
randomize;
for i:=1 to 1000000 do
begin
//проверка формулы
b:=(random(high(shortint))+1)+low(shortint)+(random(high(shortint))+1);
inc(x[b]);
end;
for i:=low(shortint) to high(shortint) do
begin
if x[i]=0 then begin
writeln(i,' not found');
end;
end;
readln;
end.