Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie_na_c.pdf
Скачиваний:
128
Добавлен:
06.02.2015
Размер:
665 Кб
Скачать

3.1.2.Одномерные массивы

Вязыке C/C++, кроме базовых типов, разрешено вводить и использовать производные типы, полученные на основе базовых. Стандарт языка определяет три способа получения производных типов:

массив элементов заданного типа;

указатель на объект заданного типа;

функция, возвращающая значение заданного типа.

Массив – это упорядоченная последовательность переменных одного типа. Каждому элементу массива отводится одна ячейка памяти. Элементы одного массива занимают последовательно расположенные ячейки памяти. Все элементы имеют одно имя – имя массива и отличаются индексами – порядковыми номерами в массиве. Количество элементов в массиве называется его размером. Чтобы отвести в памяти нужное количество ячеек для размещения массива, надо заранее знать его размер. Резервирование памяти для массива выполняется на этапе компиляции программы [1].

3.1.2.1. Описание массива в C/C++

Описание массива в программе отличается от описания простой переменной наличием после имени квадратных скобок, в которых задается количество элементов массива (размерность):

Пример 31. Описания массива из 10 вещественных чисел float a [10];

Элементы массива нумеруются с нуля. Инициализирующие значения для массивов записываются в фигурных скобках.

Пример 32. Инициализация массива

int b[5] = {3, 2, 1}; // b[0]=3, b[1]=2, b[2]=1, b[3]=0, b[4]=0

Размерность массива может быть задана только целой положительной константой или константным выражением.

Для доступа к элементу массива после его имени указывается номер элемента (индекс) в квадратных скобках.

Пример 33. Расчёт сумма элементов массива.

#include <iostream.h> int main()

{

72

const int n = 10;

int marks[n] = {3, 4, 5, 4, 4};

for (int i = 0, sum = 0; i<n; i++) sum += marks[i];

cout << "Сумма элементов: " << sum;

}

В примере 33 размерность массивов предпочтительнее задавать с помощью типизированных констант.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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, используя цикл с параметром:

73

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

3.1.2.4. Датчика случайных чисел для формирования массива.

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

1)Берется большое число К и произвольное x0 [0,1] . 2)Формируются числа х1=дробная_часть(х0*К);

х2=дробная_часть(х1*К); и т. д.

Врезультате получается последовательность чисел х0, х1, х2, . . . беспорядочно разбросанных по отрезку от 0 до 1. Их можно считать случайными, а точнее псевдослучайными. Реальные ДСЧ реализуют более сложную функцию f(x).

ВС++ имеется функция int rand() – возвращает псевдослучайное число из диапазона 0..RAND_MAX=32767, описание функции находится в файле <stdlib.h>.

Пример 34. Формирования и печати массива с помощью ДСЧ:

#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; cout<<a[I]<<” “;

}

}

В этой программе используется перебор массива по одному элементу слева направо с шагом 1.

Пример 35. Найти максимальный элемент массива.

#include<iostream.h>

#include<stdlib.h>

#include<conio.h>

74

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]