Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Викентьева О. Л. Основы языка С++.rtf
Скачиваний:
77
Добавлен:
02.05.2014
Размер:
1.5 Mб
Скачать

6.2. Обработка одномерных массивов

При работе с массивами очень часто требуется одинаково обработать все элементы или часть элементов массива. Для этого организуется перебор массива.

Перебор элементов массива характеризуется:

  • направлением перебора;

  • количеством одновременно обрабатываемых элементов;

  • характером изменения индексов.

По направлению перебора массивы обрабатывают :

  • слева направо (от начала массива к его концу);

  • справа налево (от конца массива к началу);

  • от обоих концов к середине.

Индексы могут меняться

  • линейно (с постоянным шагом);

  • нелинейно (с переменным шагом).

6.2.1. Перебор массива по одному элементу

Элементы можно перебирать:

  1. Слева направо с шагом 1, используя цикл с параметром

for(int I=0;I<n;I++){обработка a[I];}

  1. Слева направо с шагом отличным от 1, используя цикл с параметром

for (int I=0;I<n;I+=step){обработка a[I];}

  1. Справа налево с шагом 1, используя цикл с параметром

for(int I=n-1;I>=0;I--){обработка a[I];}

  1. Справа налево с шагом отличным от 1, используя цикл с параметром

for (int I=n-1;I>=0;I-=step){обработка a[I];}

6.2.2 Формирование псевдодинамических массивов

При описании массива в программе надо обязательно указывать количество элементов массива для того, чтобы компилятор выделил под этот массив нужное количество памяти. Это не всегда бывает удобно, т. к. число элементов в массиве может меняться в зависимости от решаемой задачи. Динамические массивы реализуются с помощью указателей (см. далее).

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

  1. при определении массива выделяется достаточно большое количество памяти:

const int MAX_SIZE=100;//именованная константа

int mas[MAX_SIZE];

  1. пользователь вводит реальное количество элементов массива меньшее N.

int n;

cout<<”\nEnter the size of array<”<<MAX_SIZE<<”:”;cin>>n;

  1. дальнейшая работа с массивом ограничивается заданной пользователем размерностью n.

0

1

2

3

n

MAX_SIZE

Т. о. используется только часть массива.

6.2.3. Использование датчика случайных чисел для формирования массива.

Датчик случайных чисел (ДСЧ) – это программа, которая формирует псевдослучайное число. Простейший ДСЧ работает следующим образом:

  1. Берется большое число К и произвольное .

  2. Формируются числа х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.

Задача 1