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;

}

 


 

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

53647. Урок внеклассного чтения в 9 классе по рассказу Э. Хемингуэя «Кошка под дождём» 55 KB
  Структура урока Организационный момент Актуализация мотивация и целеполагание Слово учителя Беседа по тексту Итог урока Рефлексия Тип урока изучение и первичное закрепление нового материала. Ход урока. Структура урока Деятельность учителя Деятельность ученика Организационный момент 1 минута Приветствует учащихся рассаживает их по партам создает доброжелательную рабочую атмосферу проверяет готовность учащихся к работе и наличие у каждого ученика художественного текста.
53648. Стоимость источников заемного капитала, собственного капитала. Средневзвешенная стоимость капитала 32.5 KB
  Основными элементами заемного капитала являются ссуды банка и выпущенные предприятием облигации. Стоимость такого источника финансирования как банковские ссуды зависит в первую очередь от процентной ставки по кредиту.
53649. Художественная культура Античности 340.5 KB
  Ученики отвечают на вопросы Ученики вставляют пропущенные слова Ученики пишут современное значение крылатых выражений Ученики отгадывают загадки о древнегреческих богах Ученики отгадывают ребусы Ученики отвечают на вопросы Ученики вставляют пропущенные слова Ученики пишут современное значение крылатых выражений Ученики отгадывают загадки древнегреческих богах Ученики отгадывают ребусы 1 вариант Древнеримская культура Определите соответствие между древнегреческими и древнеримскими богами их функциями Зевс Марс 1 бог любви Арес...
53650. Художественная культура Древнего Рима. Мифологические представления древних римлян 110.5 KB
  Основные понятия урока: античное искусство этруски патриотизм империя Методы: Наглядный просмотр репродукций и иллюстраций работа с карточками по мифологии словесный рассказ учителя беседа учителя и учеников письменное заполнение таблицы. Ход урока: Время Содержание урока речевая деятельность учителя и учеников Примечания по выполнению: этапы урока деятельность...
53651. Знакомство с отрывком из рассказа И.С.Соколова-Микитова «Русский лес» 31.5 KB
  Сегодня не покидая нашего класса мы отправляемся в весенний лес. А что можно услышать ранним утром войдя в весенний лес шум ручья пение птиц как ветер гуляет в юной листве Представьте раннее утро По лесу идет Иван Сергеевич Соколов-Микитов. Учитель читает отрывок из произведения Русский лес Соколова-Микитова.
53652. Лицемерие в комедии Ж.Б.Мольера «Тартюф» 57 KB
  Кого сегодня нет учитель отмечает в журнале отсутствующих. Учитель: Запишите пожалуйста тему урока. Учитель: Запишите пожалуйста эпиграф полное имя и годы жизни драматурга. Учитель: До Мольера комедии считались низким жанром.
53653. Бюджетирование как инструмент финансового планирования. Финансовые бюджеты 27 KB
  Планирование текущей деятельности предприятия заключается в построении генерального бюджета, представляющего собой систему взаимосвязанных операционных и финансовых бюджетов
53654. Прямоугольник и квадрат 53 KB
  Цель: Формировать первоначальное представление о геометрических фигурах: прямоугольник и квадрат. Задачи: 1 уточнить понятия прямоугольника и квадрата выявить существенные признаки прямоугольника и квадрата 2 формировать способность к распознанию фигур на основе существенных свойств изображению и вычислению их периметра 3 развивать устные вычислительные навыки логическое мышление обогащать...
53655. Деление чисел с разными знаками 2.66 MB
  Организационный момент Учитель: Здравствуйте садитесь. Проверка домашнего задания учитель включает проектор со слайдом домашней работы на котором также отражены критерии оценки работы Учитель: Поменяйтесь тетрадями. ученики сверяют ответы Учитель: Критерий оценки: все решено верно ставьте ПЯТЬ один минус ЧЕТЫРЕ дватри минуса ТРИ во всех остальных случаях ДВА. Устная работа Таблица с правилом знаков на магнитной доске Учитель: повторим правило знаков для умножения внимание на магнитную доску.