Инициализации значений элементов массива постоянными значениями




Работа с массивами

 

Общие сведения о массивах

 

Массив – это одна из известных и наиболее простых структур данных. Под массивом в языке С понимают набор данных одного и того же типа, собранных под одним именем. Массив определяется именем массива и порядковым номером каждого своего элемента. Обычно порядковый номер элемента называют индексом. Индекс (то есть порядковый номер элемента) в языке С всегда целое число.

В элементарной математике, как массивам, так и последовательно вычисляемым значениям (рядам), может соответствовать запись с одним и двумя индексами:

 

В языке C (C++) физическая нумерация элементов массива всегда начинается с нулевого элемента массива:

Пример описания одномерного массива с предельным размером в 100 элементов:

 

int _tmain(int argc, _TCHAR* argv[])

{

const int k_max = 100; // Предельный размер массива

typedef float Type_Elements_a; // Тип элементов массива a

Type_Elements_a a[k_max]; //Сам массив a

int k; // Текущий предельный размер массива

}

 

Краткое, не рекомендуемое описание того же массива:

 

float a[100];

 

При кратком описании массива обычно текущий предельный размер массива равен предельному размеру массива. Внутри программы приходится многократно использовать константу размера массива (в данном примере равную 100).

Пример описания двухмерного массива с предельным размером в 5*6 = 30 элементов:

 

int _tmain(int argc, _TCHAR* argv[])

{

const int n_Max = 5; //Предельное количество строк масива

const int m_Max = 5; //Предельное количество столбцов

//масива

typedef float Type_Elements_b; //Тип элементов массива b

 

Type_Elements_b b[n_Max][m_Max]; //Сам массив b

Int n; //Текущее предельное количество строк массива

Int m; //Текущее предельное количество столбцов массива

}

 

 

Краткое, не рекомендуемое описание того же массива:

 

float b[5][5];

 

При кратком описании массива обычно текущее предельное количество строк и текущее предельное количество столбцов массива соответствуют предельным размерам массива, соответствующим его описанию. Внутри программы приходится многократно использовать константы предельного количества столбцов и строк массива (в данном примере это 5 и 6).

 

 

Алгоритмы инициализации значений элементов массива

Инициализации значений элементов массива постоянными значениями

При работе с массивами часто используется алгоритм последовательного перебора всех значений массива, позволяющий по очереди получить доступ к каждому элементу. Наиболее часто для последовательного перебора всех элементов массива используется НЕУНИВЕРСАЛЬНЫЙ ЦИКЛ for с модификацией работы n раз при I от 0 до n-1:

 

//Задание i = 0, 1, 2,..., n-1

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

{

//Действие цикла при i = 0, 1, 2,..., n-1

 

}

Рассмотрим алгоритм такого перебора на примере инициализации элементов одномерного массива значением 5. Наглядный тест:

 

k = 4;

//Инициализация всех элементов одномерного массива a значением 5

//Задание i – номера инициализируемого элемента массива

for (int i = 0; i<k; i++)

{

//Инициализация очередного i-го элемента

a[i] = 5.0;

}

 

Убираем лишние операторные скобки, охватывающие только один оператор, имеем:

 

k = 4;

//Инициализация всех элементов одномерного массива a значением 5

//Задание i – номера инициализируемого элемента массива

for (int i = 0; i<k; i++)

a[i] = 5.0;

//Следующий оператор

 

Следующая конструкция из двух вложенных НЕУНИВЕРСАЛЬНЫЙ ЦИКЛ for обеспечивает последовательное задание индексов всех элементов двухмерного массива:

 

//Задание j – номеров строк инициализируемых элементов массива

for (j = 0; j<n; j++)

{

//Задание i – номеров столбцов строки j элементов массива

for (i = 0; i<m; i++)

{

//Действие цикла

 

}

}

 

Задание индексов происходит в порядке, показанном на следующем наглядном тесте:

Рассмотрим алгоритм последовательного перебора всех элементов двухмерного массива на примере инициализации всех элементов двухмерного массива значением 7.

 

 

//Инициализация всех элементов массива b значением 7

//Задание j – номеров строк инициализируемых элементов

//массива

for (int j = 0; j<n; j++)

{

//Задание i – номеров столбцов строки j элементов

//массива

for (int i = 0; i<m; i++)

{

//Инициализация очередного i-го элемента

b[j][i]= 7.0;

}

}

Убираем лишние операторные скобки, охватывающие только один оператор, имеем:

 

//Инициализация всех элементов массива b значением 7

//Задание j – номеров строк инициализируемых элементов

//массива

for (int j = 0; j<n; j++)

//Задание i – номеров столбцов строки j элементов

//массива

for (int i = 0; i<m; i++

//Инициализация очередного i-го элемента

b[j][i]= 7.0;

 

Отметим, что для корректного выполнения алгоритма фрагмента необходимо иметь уже определенные значения n, m:

При исполнении алгоритма и значениях n=3, m=2 элементы массива b будут инициализированы в следующем порядке:

 

j i

b[0][0] = 7.0

b[0][1] = 7.0

b[1][0] = 7.0

b[1][1] = 7.0

b[2][0] = 7.0

b[2][1] = 7.0

 

Обнуление массивов является частным случаем инициализация всех элементов массива значением 0.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: