Использование датчика случайных чисел для формирования массива
Датчик случайных чисел (ДСЧ) – это программа, которая формирует псевдослучайное число. Простейший ДСЧ работает следующим образом:
Берется большое число К и произвольное .
Формируются числа х1=дробная_часть(х0*К); х2=дробная_часть(х1*К); и т. д.
В результате получается последовательность чисел х0, х1, х2,. . . беспорядочно разбросанных по отрезку от 0 до 1. Их можно считать случайными, а точнее псевдослучайными. Реальные ДСЧ реализуют более сложную функцию f(x).
В Си++ есть функция
int rand() – возвращает псевдослучайное число из диапазона 0..RAND_MAX=32767, описание функции находится в файле <stdlib.h>.
Пример.
формирования и печати массива с помощью ДСЧ:
#include<iostream.h>
#include<stdlib.h>
void main()
{
int a[100];
int n;
cout<<”\nEnter the size of array:”;cin>>n;
for(int I=0;I<n;I++)
{a[I]=rand()%100-50;
cout<<a[I]<<” “;
}
}
В этой программе используется перебор массива по одному элементу слева направо с шагом 1.
Перебор массива по два элемента.
Элементы массива можно обрабатывать по два элемента, двигаясь с обеих сторон массива к его середине:
int I=0, J=N-1;
while( I<J)
{обработка a[I] и a[J];I++;J--;}
Элементы массива можно обрабатывать по два элемента, двигаясь от начала к концу с шагом 1(т. е. обрабатываются пары элементов a[1]и a[2], a[2]и a[3] и т. д.):
for (I=1;I<N;I++)
{обработка a[I] и a[I+1]}
Элементы массива можно обрабатывать по два элемента, двигаясь от начала к концу с шагом 2 (т. е. обрабатываются пары элементов a[1]и a[2], a[3]и a[4] и т. д.)
int I=1;
while (I<N-1 )
{обработка a[I] и a[I+1];
I+=2;}
Варианты
Вариант 1.
Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Удалить элемент с номером К.
Добавить после каждого четного элемента массива элемент со значением 0.
Распечатать полученный массив.
Вариант 2.
Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Удалить первый элемент равный 0.
Добавить после каждого четного элемента массива элемент со значением M[I-1]+2.
Распечатать полученный массив.
Вариант 3.
Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Удалить все элементы равные 0.
Добавить после первого четного элемента массива элемент со значением M[I-1]+2.
Распечатать полученный массив.
Вариант 4.
Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Удалить элементы, индексы которых кратны 3.
Добавить после каждого отрицательного элемента массива элемент со значением | M[ I-1 ]+1|.
Распечатать полученный массив.
Вариант 5.
Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Удалить элементы кратные 7.
Добавить после каждого нечетного элемента массива элемент со значением 0.
Распечатать полученный массив.
Вариант 6.
Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Удалить элемент с заданным номером.
Добавить после первого четного элемента массива элемент со значением M[ I-1 ]+2.
Распечатать полученный массив.
Вариант 7.
Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Удалить последний элемент равный 0.
Добавить после элемента массива с заданным индексом элемент со значением 100.
Распечатать полученный массив.
Вариант 8.
Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Удалить все элементы с заданным значением.
Добавить перед каждым четным элементом массива элемент со значением 0.
Распечатать полученный массив.
Вариант 9.
Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Удалить первый элемент с заданным значением.
Сдвинуть массив циклически на К элементов вправо.
Распечатать полученный массив.
Вариант 10.
Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Удалить 5 первых элементы массива.
Добавить в конец массива 3 новых элемента.
Распечатать полученный массив.
Вариант 11.
Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Удалить 5 последних элементов массива.
Добавить в начало массива 3 элемента с значением M[ I+1 ]+2.
Распечатать полученный массив.
Вариант 12.
Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Поменять местами минимальный и максимальный элементы массива.
Удалить из массива все элементы превышающие его среднее значение более, чем на 10%.
Распечатать полученный массив.
Вариант 13.
Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Удалить из массива все элементы совпадающие с его минимальным значением.
Добавить в начало массива 3 элемента с значением равным среднему арифметическому массива.
Распечатать полученный массив.
Вариант 14.
Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Перевернуть массив и, если число элементов массива нечетное, удалить его средний элемент.
Добавить в начало массива 3 элемента с значением M[ I+10 ]-2.
Распечатать полученный массив.
Вариант 15.
Сформировать одномерный массив вещественных чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Вычислить
1. сумму отрицательных элементов массива;
2. произведение элементов массива, расположенных между максимальным и минимальным элементами.
Вариант 16.
Сформировать одномерный массив вещественных чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Вычислить:
1. сумму положительных элементов массива;
2. произведение элементов массива, расположенных между максимальным по модулю и минимальным но модулю элементами.
Вариант 17.
Сформировать одномерный массив вещественных чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Вычислить:
1. произведение элементов массива с четными номерами;
2. сумму элементов массива, расположенных между первым и последним нулевыми элементами.
Вариант 18.
Сформировать одномерный массив вещественных чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Вычислить:
1. сумму элементов массива с нечетными номерами;
2. сумму элементов массива, расположенных между первым и последним отрицательными элементами.
Вариант 19.
Сформировать одномерный массив вещественных чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Вычислить:
1. минимальный элемент массива;
2. сумму элементов массива, расположенных между первым и последним положительными элементами.
Вариант 20.
Сформировать одномерный массив вещественных чисел, используя датчик случайных чисел.
Распечатать полученный массив.
Вычислить:
1. номер минимального элемента массива;
2. сумму элементов массива, расположенных между первым и вторым отрицательными элементами.
Методические указания
При выполнении работы используются статические массивы. Для организации статических массивов с псевдопеременными границами необходимо объявить массив достаточно большой длины, например, 100 элементов:
int N=100;
int a[N];
Затем пользователь вводит реальную длину массива (не больше N) и работает с массивом той длины, которую он сам указал. Остальные элементы (хотя память под них и будет выделена) не рассматриваются.
При уменьшении или увеличении длины массива необходимо изменять его реальную длину.
Целесообразно использовать для написания программы функции, каждая из которых выполняет один пункт задания.
Содержание отчета
1. Вариант задания;
2. Алгоритм решения задачи;
3. Листинг программы;
4. Результат работы программы.
Контрольные вопросы
1. Что такое массив?
2. Как определяется массив в С++?
3. Привести примеры определений и инициализации массивов.
4. Как организовать перебор элементов массива?
5. Особенности формирования псевдодинамических массивов.
6. Особенности использования датчика случайных чисел при работе с массивами.