Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Итог_Пособие C++.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.03 Mб
Скачать

1.6.2 Встроенные массивы

Описание одномерного массива. Одномерный массив объявляется так:

тип имя_массива [количество элементов];

Например: int mas[10] - массив из 10 целых чисел.

char s[20] - строка на 20 символов

По стандарту количество элементов массива должно быть задано в виде константного выражения. Некоторые компиляторы, например, gnu c++, поддерживают и такой вариант (для массивов, объявленных локально):

int n; cin>>n; int mas[n];

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

Обратим внимание – нумерация элементов массива начинается с нуля! В C++ традиционно под массив выделяется непрерывная область памяти (отсюда и термин массив), в процессе работы программы не выполняется проверка выхода индекса за границы массива – при программировании нужна аккуратность.

При объявлении массива можно его сразу инициализировать:

int a[5]={3,5,7,11,13};

В этом случае можно не указывать размер массива – компилятор сам его подсчитает и выделит необходимое количество памяти:

int a[]={3,5,7,11,13};

Если список значений короче длины массива, то остальные элементы инициализируются нулями:

int a[10]={3,5,7,11,13}; - последние пять элементов будут нулевыми.

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

В следующем примере одномерный массив из n элементов (n<=10) заполняется случайными числами в интервале [-100, 100], попутно вычисляется максимальный элемент массива и его позиция в массиве.

// Пример 1.5 - заполняем массив случайными числами,

// находим наибольшее и его позицию (если несколько – позицию первого)

#include <iostream>

#include <ctime> // для инициализации датчика случайных чисел

using namespace std;

int main()

{ int n, i, c[10], c_max=-101, i_max=0;

srand(time(0));// начальная установка датчика случайных чисел

// при вводе размеров массива рекомендуем проверять правильность

do {cout<<"n=?"; cin>>n;} while (n>10||n<1);

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

c[i]=rand()%201-100;// числа приводятся к интервалу [-100,100]

cout<<c[i]<<" ";

if (c[i]>c_max) {c_max=c[i]; i_max=i;}

}

cout<<endl<<"maximum "<<c_max<<" in position "<<i_max+1<<endl;

system("pause");

}

Далее уместно рассмотреть новый вид цикла for, введённый в С++ 11, который получил название for по диапазону. Его использование поясним на простом примере – программа выводит элементы заданного массива, используя непривычный синтаксис.

Пример цикла for, основанного на диапазоне:

// Пример 1.6 – демонстрация цикла for по диапазону

#include <iostream>

using namespace std;

int main() {

int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};

for (int x : a) {

cout << x << " ";

}

return 0;

}

Многомерные массивы. Объявляются так:

тип имя [размер1][размер2]…[размерN]

Например: int t[4][10]; // двумерный массив из 40 элементов //(матрица, содержащая 4 строки, 10 столбцов)

обратиться к произвольному элементу массива можно так: t[i][j]

Обратим внимание: t[i,j] – неправильная запись, но компилятор при этом ошибку, возможно, не выдаст (вспомним про операцию "запятая").

Многомерный массив, как и одномерный, можно инициализировать при объявлении, например:

int a[2][3]={{1,2,3}, {4,5,6}};//внутренние фигурные скобки можно опустить

Многомерный массив можно рассматривать как массив, элементы которого, в свою очередь, являются массивами. Для последнего примера a[0] и a[1] – одномерные массивы (две строки матрицы a).

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