Заполнение массива случайными числами

ВВЕДЕНИЕ

Лабораторный практикум посвящен языку Си в его базовом варианте. Для исполнения данного цикла пригодна любая операционная среда и любая система программирования Си, так как те свойства языка, которые здесь изучаются, являются ядром языка и присутствуют во всех ее реализациях. Здесь рассматривается работа в операционной системе Windows XP и системе программирования Borland C.

Описание каждой лабораторной работы начинается с разделов «Цель работы», «Краткие теоретические сведения» и «Примеры решения задач». Указанные в разделе «Краткие теоретические сведения» темы обязательно должны быть изучены по материалам лекционного курса и по литературе до начала лабораторной работы, а также должны быть разобраны все решения, приведенные в разделе «Примеры решения задач».

ЛАБОРАТОРНАЯ РАБОТА № 13

ОДНОМЕРНЫЕ МАССИВЫ

Цель работы:получение практических навыков в работе с одномерными массивами.

Краткие теоретические сведения

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

Массив называется одномерным, если он состоит из одной строки и N столбцов (вектор).

Формат описания массива следующий:

тип_элементов имя [размерность];

Размерность – это количество элементов в массиве (целая положительная константа).

Например:

int array[10];

Данная запись означает, что резервируется память для 10 чисел целого типа с именем array и порядковыми номерами (индексами) от 0 до 9 включительно. В Си индексация начинается с нуля,поэтому размер массива, указанный в описании, всегда на единицу больше максимального значения индекса.

Чтобы обратиться к отдельному элементу массива, надо указать имя массива и номер элемента в массиве (индекс) в квадратных скобках. Индекс является целым числом.

array[0] – первый элемент массива, array[9] – последний элемент массива.

Элементы массива обладают всеми атрибутами заданного типа.

Существуют два варианта объявления массива:

§ неинициализированный (например, массив с четырьмя элементами целого типа можно определить как int array[4];);

§ инициализированный. Определяется следующим образом: int array[]={2, 3, 5, 7};

Ввод элементов массива

Ввод элементов одномерного массива с клавиатуры осуществляется следующим образом:

const int n=5; // количество элементов в массиве

float array[n]; // объявление массива

int i; // объявление индекса элементов

for (i=0; i<n; i++)

{ printf(“array[%d]=”, i); // печать подсказки

scanf(“%f”, &array[i]); // считывание с клавиатуры элемента

}

Заполнение массива случайными числами

Пусть требуется заполнить массив равномерно распределенными случайными числами в интервале [a,b]. Поскольку для целых и вещественных чисел способы вычисления случайного числа в заданном интервале отличаются, рассмотрим оба варианта. Здесь и далее предполагается, что в начале программы есть строчка

const int n = 10;

Описание функции-датчика случайных чисел находится в заголовочном файле stdlib.h.

Удобно также добавить в свою программу функцию random:

int random (int N) { return rand() % N; }

которая выдает случайные числа с равномерным распределением в интервале [0,N-1]. Для получения случайных чисел с равномерным распределением в интервале [a,b]надо использовать формулу

k = random ( b – a + 1 ) + a;

Для вещественных чисел формула несколько другая:

x = rand()*(b - a)/RAND_MAX + a;

Здесь константа RAND_MAX– это максимальное случайное число, которое выдает стандартная функция rand.

В приведенном ниже примере массив Aзаполняется случайными целыми числами в интервале [-5,10], а массив X– случайными вещественными числами в том же интервале.

const int n=10;

float x[n];

int i, A[n], a=-5, b=10;;

randomize(); // инициализация генератора случайных чисел

for (i=0; i<n; i++)

A[i]=random(b-a+1)+a; // каждому элементу массива

// присваивает некоторое случайное значение

for (i=0; i<n; i++)

x[i]=(float)rand()*(b-a)/RAND_MAX+a;

Если необходимо, чтобы числа были не только положительными, но и отрицательными, можно записать, например, так:

array[i]=20 – random (100);

Вывод элементов массива

1. Вывод элементов массива в одну строку экрана:

const int n=5;

float array[n];

int i;

for (i=0; i<n; i++)

printf(“%f \t”, array[i]); // \t – табуляция

Для вывода элементов массива в один столбец экрана в функции printf нужно заменить \t на \n – переход на новую строку экрана.

Операция sizeof

С помощью операции sizeof() можно определить размер памяти, которая соответствует идентификатору или типу. Операция sizeof() имеет следующий формат:

sizeof (выражение);

В качестве выражения может быть использован любой идентификатор либо имя типа. Если в качестве выражения указано имя массива, то результатом является размер всего массива (т. е. произведение числа элементов на длину типа).

printf(“%d \n”, sizeof (array));

Наши рекомендации