4866

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

Лекция

Информатика, кибернетика и программирование

Одномерные и многомерные массивы Массив представляет собой набор переменных одного типа. Элементы массива размещаются в памяти последовательно и индексируются начиная с 0. Доступ к элементам осуществляется напрямую по индексу. Размерность массива оп...

Русский

2012-11-28

36.5 KB

15 чел.

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

Массив представляет собой набор переменных одного типа. Элементы массива размещаются в памяти последовательно и индексируются начиная с 0. Доступ к элементам осуществляется напрямую по индексу. Размерность массива определяется при его объявлении и может быть либо явно задана константным выражением либо выведена исходя их количества элементов при инициализации:

// Объявление массива из 100 элементов,

// все элементы неинициализированы

 char mas1[100];

 // Объявление массива с одновременной инициализацией,

 // размерность массива равна количеству элементов в списке: 5

 int mas2[] = { 16, 8, 4, 2, 1 };

 // Объявление массива из 10 элементов, инициализированы

 // только первые 3 элемента (с индексами 0, 1, 2), остальные

// элементы инициализированы нулями

 long mas3[10] = { 10, 20, 30 };

Доступ к элементам массива осуществляется по соответствующему индексу с помощью оператора []. Первый элемент массива размерности N имеет индекс 0, последний – N-1. В следующем примере массив заполняется значениями, введенными пользователем, и выводится в обратном порядке:

const short N = 5;

 double mas[N];

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

 std::cin >> mas[i];

 for ( int i = N-1; i >= 0; --i )

 std::cout << mas[i] << " ";

std::cout << std::endl;

Скопировать один массив в другой или сравнить массивы можно только поэлементно:

const unsigned int N = 5;

int A[N] = { 1, 2, 3, 4, 5 };

int B[N];

// Копируем массив A в массив B

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

  B[i] = A[i];

Важно помнить, что С++ не обеспечивает контроля индексов массивов, поэтому программист должен самостоятельно следить за тем, чтобы индекс не вышел за границы массива. В этом случае обращение к элементу массива приведет к попытке получить доступ к «чужому» участку памяти, что может привести к неопределенному поведению или аварийному завершению прораммы во время выполнения.

Многомерные массивы объявляются и инициализируются аналогично:

 // Объявление многомерного массива размерности 3x4x5,

 // все элементы неинициализированы

 double mas4[3][4][5];

// Объявление многомерного массива с одновременной

// инициализацией.

 int mas5[3][3] = { { 11, 12, 13 }

                 , { 21, 22, 23 }

    , { 31, 32, 33 }

    };

Все элементы многомерных массивов также располагаются в памяти последовательно, причем первыми меняются значения самого правого индекса. Например, для массива char mas[2][3] будет выделено 6 байт памяти, в которых элементы массива будут размещены в следующем порядке:

 mas[0][0] mas[0][1] mas[0][2] mas[1][0] mas[1][1] mas[1][2]

         1           2           3           4           5         6

Двумерные массивы удобно интерпретировать как матрицы, при этом первый индекс определяет номер строки, второй – столбца. Следующий пример реализует заполнение матрицы случайными числами и её транспонирование.

#include <iostream>

int main()

{

setlocale( 0, "Rus" );

 

 const short N = 5;

 double mas[N][N];

 // Заполнение матрицы случайными числами

std::cout << "Исходная матрица" << std::endl;

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

{

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

 {

  mas[i][j] = rand() % 100;

  std::cout << mas[i][j] << "\t";

 }

 std::cout << std::endl;

}

std::cout << std::endl;

 // Транспонирование матрицы

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

{

 for ( int j = i + 1; j < N; ++j )

 {

  double temp = mas[i][j];

  mas[i][j] = mas[j][i];

  mas[j][i] = temp;

 }

}

 

 // Вывод на экран

std::cout << "Транспонированная матрица" << std::endl;

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

{

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

  std::cout << mas[i][j] << "\t";

 std::cout << std::endl;

}

system( "pause" );

 return 0;

}

 


 

А также другие работы, которые могут Вас заинтересовать

2943. Travelling: Who Knows More 47.5 KB
  Travelling: Who Knows More? Цели: 1. Расширение лингвострановедческой компетенции учащихся. 2. Воспитание интереса к культуре стран изучаемого языка. Задачи: 1. Образовательные: Обобщение страноведческих знаний учащихся, полученных в р...
2944. Введение в управление предприятием и содержание дисциплины «Менеджмент предприятия» 100.5 KB
  Введение в управление предприятием и содержание дисциплины Менеджмент предприятия  Вопросы для изучения: Краткая историческая справка и отличительные особенности развития управленческой мысли в нашей стране. Основные проблемы пере...
2945. Сущность эффективного управления предприятием 113 KB
  Сущность эффективного управления предприятием Вопросы: Сущность и характерные черты менеджмента. Содержание менеджмента. Современные подходы и концепции менеджмента. Виды и уровни менеджмента предприятия. Успешное (эффективное) у...
2946. Организация управления промышленной фирмой 89 KB
  Организация управления промышленной фирмой Тема включает три раздела: Основные принципы внутрифирменного управления. Организация управления международной деятельностью фирмы. Опыт (тенденции) управления промышленными фирмами в разв...
2947. Организация управления международной деятельностью фирмы 67.5 KB
  Организация управления международной деятельностью фирмы  Международная среда и международный бизнес фирмы. Содержание и формы (методы) международной деятельности фирмы. Организация зарубежной производственной деятельности фирм...
2948. Опыт управления ведущих фирм США, Японии и Западной Европы 103 KB
  Опыт управления ведущих фирм США, Японии и Западной Европы Вопросы: Основные этапы развития организационных структур промышленных фирм  Ключевые элементы управления предприятием (корпорацией) Особенности внутрифирменного планировани...
2949. Маркетинг как специфическая функция управления предприятием 105.5 KB
  Маркетинг как специфическая функция управления предприятием Тема включает 2 части Маркетинговая деятельность на промышленном предприятии Использование маркетинговых программ для оптимизации структуры и программы производства Маркет...
2950. Разработка маркетинговых программ и сбытовой политики предприятия 107 KB
  Разработка маркетинговых программ и сбытовой политики предприятия Вопросы: Разработка программы маркетинга по продукту. Разработка программы маркетинга по производству. Организация и стимулирование сбыта. Разработка программы марке...
2951. Внутрифирменное планирование 70 KB
  Внутрифирменное планирование Тема включает два раздела: Базовые аспекты внутрифирменного планирования. Перспективное планирование и разработка бюджета предприятия. Базовые аспекты внутрифирменного планирования Вопросы: Цели ...