Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Создание пробных, отладочных массивов




При разработке какой–либо конкретной программы вовсе не обязательно проверять и отлаживать ее на реальном массиве исходных данных, особенно, когда последний велик по объему. Проверку и отладку программ гораздо удобнее делать на пробных, отладочных массивах, создание которых можно поручить самой ЭВМ, предусмотрев в программе несколько дополнительных операторов, которые после окончания отладки программы могут быть удалены и заменены операторами ввода подлинных массивов данных.

Создание пробного массива может быть осуществлено с помощью любой функции от его индексов включенной в простой (для одномерных массивов) или двойной (для двумерных) цикл. Наиболее удобными для этого являются функции sin и cos. Т.к. они принимают значения в пределах [–1,1], то подбором соответствующих множителей легко регулировать порядок элементов формируемых массивов.

Например массив X из 100 вещественных чисел, принимающих значения в пределах от –n до +n может быть создан следующим оператором:

for k:=1 to 100 do x[k]:=n*sin(0.1*k);

Заметим, что множитель 0.1 в аргументе sin введен здесь во избежание вычисления синуса слишком больших аргументов, что связано с увеличением времени работы программы. Этот множитель может быть и любым другим, а также может и отсутствовать. Если элементы массива должны быть положительными, то оператор присваивания в данном случае можно записать в виде abs(к*sin(к/10));

Пример 2.6. Сформировать матрицу m размером 5x6 из положительных и отрицательных целых чисел в пределах от –10 до 10 можно с помощью следующего фрагмента:

for i=1 to 5 do

Begin

for j:=1 to 6 do m[i,j]=round(10*sin(i+j));

End;

Наиболее простым и удобным способом создания пробных массивов является использование специальной функции Random – датчика случайных чисел. Эта функция записывается в виде: Random или Random(N), где аргумент N представляет собой число или выражение целого типа. Если этот аргумент задан, функция генерирует случайные целые числа в интервале от 0 до N, если не задан, то вещественные числа в интервале 0–1. Например, включенный в цикл оператор Random (10), генерирует случайные целые числа в интервале от 0 до 10, а оператор Random–вещественные числа в интервале от 0 до 1. Если необходим вещественный массив, то целые числа, выдаваемые функцией Random, переводится в вещественные умножением (или делением) на любой вещественный множитель, а если необходимы положительные и отрицательные элементы массива, то они получаются вычитанием из результатов функции Random соответствующим образом подобранной константы.

Рассмотрим, например оператор:

a[i]:=Random(100)*0.521–26.0;

Функция Random (100) при каждом i генерирует случайные целые числа в пределах от 0 до 100; множитель 0.521 преобразует эти числа в вещественные в пределах от 0 до 52.1. Т.к. примерно половина этих чисел будет меньше 52.1/2, то вычитаемое 26.0 преобразует их в отрицательные. В результате весь этот оператор при изменении индекса i от 1 до n, сформирует n случайных вещественных чисел в пределах –26 до +26.0. Примерно половина этих чисел будет положительными, остальные отрицательные.

Пример 2.7. Пусть необходимо создать пробный одномерный массив a из 20 целых чисел в пределах от 0 до 100, а также матрицу b размером 10x10 с вещественными элементами в пределах от –100 до 100.

Поставленная задача может быть решена с помощью следующего программного фрагмента:

program Massiv;

Var a: array [1..20] of integer;

b: array [1..10,1..10] of real;

i,j,k: integer;

Begin

for k:=1 to 20 do a[k]:=Random(100);

for i:=1 to 10 do

Begin

for j:=1 to 10 do b[i,j]=199.9*Random–100

end;

(продолжение программы)

В данном примере функция Random(100) генерирует случайные целые числа в пределах от 0 до 1, а функция Random–вещественные числа от 0 до 1. Множитель 199.9 преобразует их в вещественные в пределах от 0 до 199.9, а константа–100 переводит те из них, которые >100, в положительные числа, а те, которые <100, в отрицательные.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных