Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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




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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

int mas[MAX_SIZE];

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

int n;

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

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

                                       
                n                     MAX_SIZE

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

1.5.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> using namespace std; void main() { int a[100]; int n; cout<<”Enter the size of array:”;cin>>n; for(int i = 0; i < n; i++) {a[i]=rand()%100-50; cout<<a[i]<<” “; } }

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

1) Элементы массива можно обрабатывать по два элемента, двигаясь с обеих сторон массива к его середине:

int i = 0, j = n-1; while(i < j) {обработка a[i] и a[j]; i++; j--;}

 

2) Элементы массива можно обрабатывать по два элемента, двигаясь от начала к концу с шагом 1 (т. е. обрабатываются пары элементов a[1] и a[2], a[2] и a[3] и т. д.):

for (i = 1; i < N; i ++) {обработка a[i] и a[i+1]}

 

3) Элементы массива можно обрабатывать по два элемента, двигаясь от начала к концу с шагом 2 (т. е. обрабатываются пары элементов a[1] и a[2], a[3] и a[4] и т. д.)

int i = 1; while (i < N-1) {обработка a[i] и a[i+1]; i+=2;}




Поделиться с друзьями:


Дата добавления: 2015-05-07; Мы поможем в написании ваших работ!; просмотров: 572 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Сложнее всего начать действовать, все остальное зависит только от упорства. © Амелия Эрхарт
==> читать все изречения...

2221 - | 2091 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.