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;

}

 


 

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

55757. Вплив умов середовища на проростання насінини. Ріст і розвиток рослин 96 KB
  Мета: Ознайомити учнів із особливостями проростання насінини росту і розвитку рослин та факторами що на них впливають розвивати вміння спостерігати робити висновки виховувати уявлення про взаємозалежність процесів у природі...
55759. Портфоліо – перспективна форма представлення індивідуальної спрямованості професійного саморозвитку і самоактуалізації педагога 36 KB
  Мета створення портфоліо забезпечення відслідковування індивідуального прогресу вчителя в широкому освітньому контексті демонстрація його здібності до практичного застосування освітніх надбань.
55760. Формирование критического мышления путем использования интерактивных технологий обучения 87.5 KB
  Интерактивное обучение построено на основе критического мышления. Готовить детей к жизни помочь им стать образованными и конкурентоспособными помогает и выбранная мной педагогическая технология критического мышления на современном этапе самая продуктивная. Принципы активного обучения и критического мышления. Мною изучено научнометодическое пособие по проблемам развития критического мышления в американском издании презентация интерактивного курса проработаны восемь пособий рекомендаций Международной Ассоциации Читателей.
55761. Поняття про комп’ютерні віруси. Класифікація вірусів 29.5 KB
  Антивірусні програмні продукти, як правило, об`єднують основні функції детектора — доктора — ревізора. Антивірусні програми постійно поновлюються (не рідше 1 разу на місяць). Вони можуть захистити ПК від вірусів, що відомі на даний момент.
55762. ВІДЧУВАТИ В СОБІ ВІЛЬНУ ЛЮДИНУ 49 KB
  Навчання - це лише одна з пелюсток тієї квітки що називається вихованням у широкому розумінні цього поняття. Отже виховання не просто складова освіти а її внутрішня сутність що й виражене в завданні освіти сформувати людину.
55763. Виховна година «Єдина справжня розкіш — це розкіш людського спілкування» (А. Екзюпері) 60 KB
  Мета: озброїти учнів знаннями і практичними рекомендаціями про основи спілкування; дати їм практичні рекомендації щодо удосконалення свого мовлення уміння спілкуватися; спонукати учнів застосовувати набуті знання у повсякденному спілкуванні...
55765. Механізми формування психологічних проблем і психосоматичних розладів 57 KB
  Найбільш загальним підходом до опису тілеснопсихологічних проблем що слугують точкою прилягання тілесної психокорекції служить уявлення про порушення психологічної адаптації як механізм їх формування.