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;

}

 


 

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

5409. Система упражнений для обучения аудированию 19.28 KB
  Система упражнений для обучения аудированию. При обучении аудированию, как и др. видам Р.Д., используются два вида упражнений: подготовительные и речевые. Цель подготовительных упражнений - до слушания текста снять трудности лингвистического или психол...
5410. Понятие, предмет и метод экономического анализа 119 KB
  Понятие, предмет и метод экономического анализа. Понятие экономического анализа Экономический анализ как наука представляет собой систему специальных знаний, базирующихся на законах развития и функционирования систем и направленных на познание м...
5411. Облік грошових коштів на рахунках у банку 29.77 KB
  Облік грошових коштів на рахунках у банку Порядок відкриття рахунків, вибір банку. Закриття рахунків клієнтів банків. Документальне оформлення банківських операцій. Синтетичний та аналітичний облік операцій на поточному рахун...
5412. Статические характеристики транзистора 684.5 KB
  Статические характеристики транзистора 1. Краткое содержание лекции Статическим называется режим, при котором в схеме отсутствуют источник сигнала и нагрузка, а присутствуют только источники питания. Входная характеристика - зависимость входн...
5413. Створення та редагування математичних та економічних формул у Word. Друк документів у WORD 44.51 KB
  Створення та редагування математичних та економічних формул у Word. Друк документів у WORD Мета: Ознайомлення із способами створення та редагування формул у Word. План лекції: MicrosoftEquation 3.0 - редактор формул. Вирівнюва...
5414. Загальна характеристика технічних засобів навчання 72.5 KB
  Загальна характеристика технічних засобів навчання. План. 1. Загальна характеристика технічних засобів статичної проекції. 2. Характеристика носіїв інформації статичної проекції. 3. Характеристика апаратури статичної проекції. 4. Методика використан...
5415. Культура на українських землях у найдавніші часи 219.5 KB
  Культура на українських землях у найдавніші часи План Культура первісного суспільства як історичний тип. Культурний розвиток первісного суспільства. Культура найдавніших державних утворень на українських землях. ...
5416. Нормативный аспект культуры речи 208 KB
  Нормативный аспект культуры речи Понятие о языковой норме Языковая норма (норма литературная) — это правила использования речевых средств в определенный период развития литературного языка, т. е. правила произношения, словоупотребления, и...
5417. Поняття, особливості, види, класифікація правовідносин 66.5 KB
  Поняття, особливості, види, класифікація План Поняття правовідносин по соціальному забезпеченню Особливості соціально забезпечувальних правовідносин Класифікація за видам забезпечення Правовідносини за терміном дії Прав...