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;

}

 


 

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

76869. Лимфатические сосуды и узлы таза 179.97 KB
  Приносящие сосуды возникающие из внутриорганных лимфатических сплетений направляются к не многочисленным висцеральным лимфатическим узлам: 1 околомочепузырным собирающим лимфу не только от мочевого пузыря но и от простаты мочеточников и начального отдела уретры; 2 околоматочным расположенным в параметрии между листками широкой маточной связки и собирающим лимфу от матки и маточных труб; 3 околовлагалищным лежащим на передней и задней стенках влагалища; в эти узлы лимфа вливается из шейки матки влагалища и его предверия; 4...
76870. Органы иммунной системы 181.19 KB
  Основой всех иммунных органов является лимфоидная ткань: узелковая и диффузная создающая морфофункциональный клеточный комплекс лимфоцитов плазмоцитов макрофагов и других иммунных клеток. В костном мозге из стволовых клеток путем многократных делений до 100 раз и дифференцировки по трем направлениям эритропоэз гранулопоэз тромбоцитопоэз образуются форменные элементы крови эритроциты агранулоциты лимфо и моноциты тромбоциты а также Влимфоциты. Они участвуют в гуморальном иммунитете и становятся предшественниками...
76871. Центральные органы иммунной системы 184.18 KB
  Общая масса костного мозга medull ossium составляет 253 кг 4547 от массы тела около половины приходится на красный мозг medull ossium rubr столько же на желтый – medull ossium flv. В красном костном мозге благодаря многократному делению – более 100 раз росту и усложнению структуры стволовые клетки превращаются в эритроциты лейкоциты лимфо и моноциты тромбоциты. Влимфоциты образующиеся в красном мозге участвуют в реакциях гуморального иммунитета вырабатывая антитела.
76872. Периферические иммунные органы 184.32 KB
  В белой пульпе вокруг ветвей и веточек селезеночной артерии располагаются лимфоидные узелки сформированные в периартериальные лимфоидные влагалища вокруг пульпарных ветвей эллипсоидные диски с осевым смещением вокруг центральных веточек и гильзы вокруг кисточковых артериол. В петлях сети находятся лимфоидные узелки и диффузная лимфоидная ткань. Корковое вещество лежит под капсулой и содержит лимфоидные узелки в 051 мм диаметром часть из них имеет центры размножения.
76873. Селезенка (lien, splen) и ее строение 182.4 KB
  Селезенка lien splen располагается глубоко в преджелудочной сумке верхнего этажа брюшной полости проецируется в левой подреберной области на уровне IXXI ребер. Селезенка лиен сплен имеет: массу в 20 40 лет у мужчин 192 г у женщин 153 г; длину в 1014 см ширину в 610 см толщину в 34 см; цвет темнокрасный; поверхности: диафрагмальную выпуклую; висцеральную плоскую или слегка вогнутую с лежащим посредине углублением воротами; края: верхний передний острый нижний задний – тупой; концы: задний закругленный ...
76874. Значение нервной системы 184.15 KB
  Условно нервная система подразделяется: на центральную часть в составе головного и спинного мозга; на периферическую часть в составе черепных 12 пар и спинномозговых 31 пара нервов и образующих их корешков; нервных узлов нервных сплетений отдельных ветвей и их нервных окончаний в органах и тканях. Внутри головного мозга нейроны формируют скопления в виде крупных и мелких ядер и сети ретикулярной формации. Нервные волокна мозга подразделяются на ассоциативные комиссуральные и проекционные все они образуют проводящие пути для...
76875. Понятие о нейроне 187.43 KB
  Отростки нейронов нервные волокна в периферической системе образуют корешки пучки нервы и нервные сплетения. Главной частью нервного волокна является осевой цилиндр представляющий короткий или длинный вырост цитоплазмы окруженный внутренней оболочкой неврилеммой. Мякотные или миелиновые волокна которые содержат в наружной шванновской оболочке миелин химическое вещество липоидного характера. Безмякотные безмиелиновые волокна не содержат миелина в наружной оболочке.
76876. Спинной мозг 186.68 KB
  Пластинки возникают из нервного лентовидного гребня расположенного вдоль спинного мозга сзади. Утолщение стенок изменение общей формы развивающегося мозга сопровождается сужением центрального канала. У детей 35 лет и новорожденных сильнее выражены шейногрудное и поясничнокрестцовое утолщения спинного мозга.
76877. Развитие головного мозга 184.2 KB
  Стабилизация или элиминация межнейронных связей наступает в конце созревания мозга. Вначале 5ой недели разделяется задний пузырь для образования заднего и продолговатого мозга. Изза неравномерности роста развивающегося мозга появляются в пузырях сагиттальные изгибы ориентированные выпуклостью в дорсальную сторону первые два и вентральную третий: теменной изгиб самый ранний возникает в области среднемозгового пузыря отделяя средний мозг от промежуточного и конечного; затылочный изгиб в заднем пузыре отделяет спинной мозг от...