Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

Информатика, программирование->Доклад
Проводные каналы общественных телефонных сетей принято делить на выделенные (2-х или 4-х проводные), физическое соединение по которым действует постоя...полностью>>
Информатика, программирование->Доклад
Технология ISDN (Integrated Services Digital Network) – цифровая сеть с интеграцией услуг явилась результатом развития идеи «оцифровки» телефонных сет...полностью>>
Информатика, программирование->Доклад
UNIX - одна из первых сетевых операционных систем. Датой возникновения UNIX можно считать 1969 г., когда MTI (Massachusetts Institute of Technology - ...полностью>>
Информатика, программирование->Доклад
Современный взгляд на полный сетевой сервис наиболее ярко отражён в идее мультисервисных NGN сетей (New Generation Network), предоставляющих весь комп...полностью>>

Главная > Лекция >Информатика, программирование

Сохрани ссылку в одной из сетей:

Одномерные и многомерные массивы

Массив представляет собой набор переменных одного типа. Элементы массива размещаются в памяти последовательно и индексируются начиная с 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

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;

}


Загрузить файл

Похожие страницы:

  1. Массивы. Многомерные массивы в программировании. Преобразование двухмерных массивов

    Лекция >> Информатика, программирование
    ... . Для этого используют многомерные массивы. Доступ к элементам, например, двухмерного массива (матрицы) осуществляется с ... до (m-1) div 2 (вертикальной оси массива). Преобразование двухмерного массива в одномерный Пример. Сформировать массив A, содержащий ...
  2. Одномерные и двумерные массивы

    Лабораторная работа >> Информатика
    ... массива 1.4 Инициализация массивов 1.4.1 Одномерные массивы 1.4.2 Двумерные массивы 1.5 Тип имени массива 1.6 Передача одномерных массивов в функцию 1.7 Передача двумерных массивов ... массива называют нулевой строкой. В общем случае, многомерные массивы ...
  3. Массивы и указатели

    Реферат >> Информатика
    ... массивами Операции с указателями Многомерные массивы Инициализация двумерного массива Указатели и многомерные массивы Функции и многомерные массивы Между массивами ... предназначенную для одномерного массива, для работы с двумерным массивом! Вот ...
  4. Массивы. И работа с ними в языке Pascal

    Лекция >> Информатика, программирование
    ... с соседним, и, следовательно, массив уже упорядочен. Многомерные массивы В повседневной жизни довольно часто приходится ... может быть представлена как совокупность одномерных массивов: vaz2106: array [1..12] of integer ...
  5. Массивы как наборы данных одного типа

    Лекция >> Информатика, программирование
    ... вторая форма объявления массива в поле список массивов (на примере одномерного массива): имя[]={список инициализаторов} ... Данная форма разрешается в объявлениях массива ...

Хочу больше похожих работ...

Generated in 0.0013680458068848