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;

}

 


 

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

54197. Клуб веселых математиков 309.5 KB
  Сегодня мы открываем клуб веселых математиков. В соревнованиях участвуют два класса - две команды. Это лучшие математики, которые не унывают, быстро считают, хорошо решают задачи, любознательны, живут весело и дружно.
54198. Сценарій позакласного заходу: «Математика – зліва, математика - справа» 134 KB
  Бажаю вам дорогі друзі шановні академіки успіхів у вивченні цариці наук Математики 1 учень вбігає Хлопці я чув що в школі буде тиждень математики Уявляєте весь тиждень сама лиш тільки математика 2 учень з місця Та не може такого бути 3 учень вбігає У мене для вас ось така новина Всіх вчителів направили на курси залишилися лише математики. 1 учень Ну. Учень Як зібрався математику вивчати То до класу на уроки вирушай. Виконується цікавий номер Учень Сорокап'ятирічний чоловік покохав п'ятнадцятирічну дівчину.
54200. Конкурс знавців математики «Мадонна Математика» 714 KB
  Сьогодні будемо ми друзі Царицю всіх наук вітати. Не всі ви в майбутньому станете математиками але математика потрібна і в науці і в техніці і в повсякденному житті. Ще в давні часи математику називали царицею наук ключем до всіх наук. Одне слово одне слово Математику Чом по курсу спішать на морях кораблі Хуртовини й тумани долають в імлі Капітани не ледачі Не лякають їх задачі Одне слово одне слово Математики Хочеш лікарем стати хочеш в космос літати Перш за все треба друже математику знати Всі повинні шанувати Ікси...
54201. Математична конференція «Золотий переріз – душа гармонії» 502 KB
  І називається вона Золотий переріз душа гармонії. Теорему Піфагора знає кожен школяр а про золотий переріз – далеко не всі. Про золотий переріз знали ще в Давньому Єгипті й Вавилоні в Індії та Китаї.
54202. Математичний гурток для творчих дітей 623 KB
  Для пробудження в учнів інтересу до математики дуже важлива позакласна робота та особливо гурткова. Декілька років я керую гуртком «Цікава математика». Основним своїм завданням як керівника гуртка вважаю саме пробудження інтересу до свого предмету. До роботи в гуртку я залучаю в першу чергу творчих дітей, які не дуже дружать з математикою, бо не бачать в ній можливостей для реалізації своїх творчих сил.
54203. Математика і поезія – два крила натхнення 417.5 KB
  Прищеплювати інтерес до предметів математики та літератури; активізувати і стимулювати розумову і пізнавальну діяльність учнів; розвивати вміння й навички розмірковувати, розширювати кругозір; виховувати в учнів свідоме ставлення до одержання знань.
54204. Додавання та віднімання чисел частинами. Задачі на різницеве порівняння 60 KB
  Правильно це Буратіно. Відправляючись в країну дурнів Буратіно потрапляє в казковий математичний ліс. Ось і вибрався Буратіно із лісу знайшов стежку і вона привела його до будинку Мальвіни. Мальвіна запросила Буратіно в гості напоїла чаєм і вирішила перевірити його знання з математики.
54205. Множення чисел 1 і 0. Множення на 1 і 0. Задачі на дві і три дії 36 KB
  Множення чисел 1 і 0. Множення на 1 і 0.Ознайомити учнів із випадками множення коли одним із множників є число 1 чи 0. Що таке множення Як називаються числа при множенні Що показує перший другий множник 2.