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;
}
А также другие работы, которые могут Вас заинтересовать | |||
60191. | Свято «Прощавай, початкова школа!» | 53.5 KB | |
Звучить святкова музика. Лунають фанфари. 1учень. Слухайте! 2 учень. Слухайте! 1учень. І не кажіть, що ви не чули! 2учень. І не кажіть, що ви не бачили! 1 учень. Сьогодні в нашому шкільному королівстві – свято! | |||
60192. | Сценарій тематичного вечора Дня Матері на тему «Рідна мати моя» | 73 KB | |
Спливли роки мов човник по воді І ведмежа стареньке десь поділось Та очі мами сині та сумні Моїм дитинством вранці подивились Анастасія Клєцова Руда Дитинство Ведуча 2 Кожна мама дає дитині свій наказ свою любов. | |||
60193. | Сценарій виховного заходу «Від зернини до хлібини» | 72 KB | |
Мета: Поглибити знання учнів про походження хліба, розвивати знання про професії, повязані з вирощуванням зернових культур,різновиди зернових культур. Виховувати любов до хліба, та бережливе ставлення до нього; повагу і пошану до людей хліборобської професії. | |||
60195. | Я люблю Україну, Позакласний захід для учнів початкової школи | 90 KB | |
Чи вірите що є такі квіти кульбабки та куль дідки Ні. Чи вірите що соком калини можна лікуватися від простудних захворювань і від авітамінозі Так. що сич заморожує на зиму в дуплі як у холодильникумишей і птахів Так. що в Карпатах ростуть смереки Так. | |||
60196. | В гостях у доктора Пилюлькина. Устный журнал для учащихся 2 - 4 классов | 46 KB | |
Цели: расширить знания учащихся о вирусных заболеваниях, создать условия для формирования навыков здорового образа жизни, развивать творческие способности учащихся, воспитывать чувство товарищества. | |||
60197. | Життя без насильства | 42 KB | |
Мета ознайомити дітей з документами які захищають їх права; теоретично обґрунтувати сутність насильства зясувати основні причини насильства над дітьми в середовищі сімї та виявлення шляхів його подолання. | |||
60198. | ТЕХ ДНЕЙ НЕ СТЕРЕТЬ ИЗ ПАМЯТИ ЛЮДСКОЙ | 69.5 KB | |
Оформление доски: Уж больше полвека остывши молчат батареи И мирную землю не рвет не терзает фугас Но кажется памяти нашей ни чуть не старея Умершие так же как прежде сегодня живут среди нас... | |||