Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2014, 18:57   #1
RedWhiteCasual
Новичок
Джуниор
 
Регистрация: 31.01.2014
Сообщений: 2
По умолчанию Лабораторная 2. Порядковые типы данных в оперативной памяти. Паскаль. Разработать консольную программу

Лабораторная 2. Порядковые типы данных в оперативной памяти

Разработать консольную программу, получающую на вводе строку, значение которой может быть равным одному из следующих вариантов:
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.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 01.02.2014 в 01:04.
RedWhiteCasual вне форума Ответить с цитированием
Старый 31.01.2014, 21:29   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Интересно, как это по красивше сделать? (Если всё генерировать каждый раз заново)..
Poma][a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача-найти объем оперативной памяти по шестнадцатеричному адресу последнего байта оперативной памяти Ksana Alex Помощь студентам 4 14.11.2013 15:51
Разработать способ экономного хранения в памяти разреженных матриц (таблиц). Разработать процедуры и функции для обеспечения досту Exowind88 Паскаль, Turbo Pascal, PascalABC.NET 1 23.10.2012 13:53
Типы данных, из памяти в регистры и обратно, индексирование. Новичек pinkiller Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 25.03.2012 18:58
Структурированные типы данных.Турбо-Паскаль. Анастасия*** Помощь студентам 0 04.12.2011 20:19
Паскаль. Типы данных kolashik Помощь студентам 4 19.12.2010 13:52