ТОР 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, в отрицательные. Не нашли, что искали? Воспользуйтесь поиском:
|