Разработать консольную программу, получающую на вводе строку, значение которой может быть
равным одному из следующих вариантов:
Shortint SmallInt
Longint Longword
Int64 Byte Word
Cardinal
QWord
Char Boolean.
Если введенная строка не соответствует ни одному из приведенных вариантов, вывести на экран слово Error и завершить работу программы.
Для введенного типа данных вывести на экран (1) нижную границу типа, (2) верхнюю границу типа, (3) размер типа в байтах. Заполнить переменную введенного типа случайным значением из диапазона от нижней до верхней границы типа включительно. Вывести на экран (4) полученное значение, (5) предыдущее и (6) последующее значение. Вывести на экран (7) значения байтов, хранящих переменную введенного типа, в порядке их расположения в оперативной памяти. Если полученное случайное значение является максимальным для данного типа, то вместо последующего (6) значения вывести слово Overflow. Если полученное случайное значение является минимальным для данного типа, то вместо предыдущего (5) значения также вывести слово Overflow.
Запрещается использовать константные значения характеристик типа. Значения всех характеристик типа следует вычислять, используя специальные функции для работы с порядковым типом данных (low, high и т.д.).
Пример вывода для типа Longint:
Исследуемый тип: Longint Нижняя граница: -2147483648 Верхняя граница: 2147483647 Байт на переменную: 4 Случайное значение: 818295054 Предыдущее значение: 818295053 Последующее значение: 818295055 Содержимое оперативной памяти: 14 49 198 48Получение случайных значений с использованием функции Random ограничено неотрицательным диапазоном типа Longint. Поэтому для получения случайных значений из всего диапазона целочисленных типов данных, а также типов, диапазон которых в положительной области превышает диапазон для типа Longint, следует вывести корректные формулы c использованием random, либо разработать собственный алгоритм получения случайного значения. Полученные формулы можно статистически проверить следующим образом:
// программа для статистической проверки вероятности появления случайных значений по конкретной формуле // в данном случае формула содержит ошибку, благодаря которой не учитываются 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.