4866

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

Лекция

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

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

Русский

2012-11-28

36.5 KB

18 чел.

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

Массив представляет собой набор переменных одного типа. Элементы массива размещаются в памяти последовательно и индексируются начиная с 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;

}

 


 

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

15341. ИЗУЧЕНИЕ ЗАКОНОВ ВНЕШНЕГО И ВНУТРЕННЕГО ТРЕНИЯ 540 KB
  Изучение законов внешнего и внутреннего трения Лабораторные работы № 2 9 Данное издание содержит описание теоретическую часть схемы лабораторных установок и задание двух лабораторных работ посвященных изучению законов внешнего и внутреннего трения. В первой рабо...
15342. Изучение законов вращательного движения твердого тела 460.5 KB
  Изучение законов вращательного движения твердого тела. Лабораторные работы № 315 Данное издание содержит описание двух лабораторных работ посвященных изучению законов вращательного движения твердого тела. В работах рассмотрены наиболее важные характеристики вра...
15343. ДИНАМИКА ВРАЩАТЕЛЬНОГО ДВИЖЕНИЯ ТВЕРДОГО ТЕЛА 120.99 KB
  ДИНАМИКА ВРАЩАТЕЛЬНОГО ДВИЖЕНИЯ ТВЕРДОГО ТЕЛА Методические указания к лабораторной работе № 3 по дисциплине Общая физика раздел Механика. Молекулярная физика Указание по мерам безопасности при выполнении лабораторной работы Внутри используемых в раб
15344. SWOT-анализ и выработка стратегии развития компании ООО BETON 362.5 KB
  Цель данной работы состоит в практической реализации изложенных принципов и методики проведения SWOT-анализа на примере нижегородской компании «BETON».
15345. Адаптация опекаемых подростков 108.5 KB
  Введение Роль семьи в обществе по своей значимости несравнима ни с какими другими социальными институтами так как именно в семье формируется и развивается личность ребенка происходит овладение им социальными ролями необходимыми для адаптации в обществе. По данны
15346. Анализ активов и пассивов бухгалтерского баланса 309.5 KB
  Целью курсовой работы является анализ активов и пассивов бухгалтерского баланса для оценки финансового состояния предприятия на примере ООО Алан...
15347. Анализ АХД. Полный с выводами 1.22 MB
  Устойчивое финансовое положение предприятия не является подарком судьбы или счастливым случаем его истории, а результатом умелого, просчитанного управления всей совокупностью производственных и хозяйственных факторов, определяющих результаты деятельности пред-приятия...
15348. Анализ и оценка эффективности системы управления персоналом. Магазин Очень нужные товары 469 KB
  Главной целью курсовой работы является исследование системы управления персоналом, анализ и оценка ее эффективности. Ставятся следующие задачи: рассмотреть систему управления персоналом, изучить внешнюю и внутреннюю среду предприятия, проанализировать существующую систему управления персоналом...
15349. Анализ налогообложения предприятия МУЗ Городская больница 150.5 KB
  ВВЕДЕНИЕ Среди экономических рычагов при помощи которых государство воздействует на рыночную экономику важное место отводится налогам. В условиях рыночной экономики любое государство широко использует налоговую политику в качестве определенного регулятора возде...