ЛР3. Простые типы данных

Задание

  1. Разработать консольную программу на FreePascal, получающую на вводе строку, значение которой может быть равным одному из следующих вариантов:
    Shortint SmallInt Longint Int64 Byte Word Longword QWord .

    Если введенная строка не соответствует ни одному из приведенных вариантов, вывести на экран слово Error и завершить работу программы.

    Для введенного типа данных вывести на экран (1) нижную границу типа; (2) верхнюю границу типа; (3) размер типа в байтах; (4) случайное значение из диапазона от нижней до верхней границы типа включительно; (5) предыдущее значение; (6) последующее значение; (7) значения байтов, хранящих переменную введенного типа, в порядке их расположения в оперативной памяти.

    Запрещается использовать константные значения характеристик типа. Значения всех характеристик типа следует вычислять, используя специальные функции для работы с порядковым типом данных (low, high, prev, succ и т.д.).

    Пример вывода для типа Longint:

    Исследуемый тип: Longint
    Нижняя граница: -2147483648
    Верхняя граница: 2147483647
    Байт на переменную: 4
    Случайное значение: 818295054
    Предыдущее значение: 818295053
    Последующее значение: 818295055
    Содержимое оперативной памяти: 14 49 198 48 
    

    Получение случайных значений с использованием функции Random ограничено неотрицательным диапазоном типа Int64. Поэтому для получения случайных значений из всего диапазона целочисленных типов данных, а также типов, диапазон которых в положительной области превышает диапазон для типа Longint, рекомендуется получать случайное значение для каждого байта целочисленного типа и сохранять полученный результат в соответствующей области памяти.

  2. Разработать консольную программу на FreePascal, получающую на вводе строку, значение которой может быть равным одному из следующих вариантов:
    Real Single Double Extended.

    Если введенная строка не соответствует ни одному из приведенных вариантов, вывести на экран слово Error и завершить работу программы.

    Для введенного типа данных вывести на экран (1) размер типа в байтах; (2) количество значащих знаков; (3) минимальное положительное значение типа; (4) максимальное положительное значение типа; (5) максимально возможное значение вида XeY (X-десятичная цифра, Y-положительное десятичное число), на которое можно увеличить максимальное положительное значение типа без генерации ошибки времени выполнения; (6) положительное целочисленное значение типа, увеличение которого на 1 не приводит к увеличению значения.

    Для получения информации по пунктам (2), (3) и (4) можно использовать документацию https://www.freepascal.org/docs-html/ref/refsu5.html. Пункты (5) и (6) быть готовым доказать отдельной программой.

    Пример вывода для типа Single:

    Исследуемый тип: Single
    Байт на переменную: 4
    Кол-во значащих знаков: 7-8
    Min+: 1.5e-45 
    Max+: 3.4e38
    Max+ no error: 2e35
    +1 no result: 16777216