КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Многомерные массивы
Многомерные массивы фиксированного размера задаются указанием каждого измерения в квадратных скобках, например, оператор int Mas [6][8]; задает описание двумерного массива из 6 строк и 8 столбцов. В памяти такой массив располагается в последовательных ячейках построчно. Многомерные массивы размещаются так, что при переходе к следующему элементу быстрее всего изменяется последний индекс. Все многомерные массивы в C++ имеют индексы, которые начинаются с нуля. Другие варианты объявления многомерных массивов:
const int Nmax = 5, Mmax = 5;
int Mas1[Nmax][Mmax]; int Mas2[Nmax][Mmax] = { {0} }; // все элементы равны 0 int Mas3[Nmax][Mmax] = { {1, 2}, {3, 4}, {5, 6} }; // проинициализированы по 2 элемента в 3 строках, остальные элементы равны 0 int Mas4[Nmax+10][Mmax]; int Mas5[3][2] = {1, 1, 0, 2, 1, 0}; // число строк – 3, столбцов – 2 int Mas6[ ][2] = {1, 1, 0, 2, 1, 0}; // число строк – 3
Для многомерного массива может быть опущена только первая размерность. Для доступа к элементу многомерного массива указываются все его индексы, например, Mas[i][j], где В следующем примере приведены блоки ввода и вывода двумерного массива:
#include <stdio.h>
void main() { const int Nmax = 5, Mmax = 5; // максимальная размерность
int Mas[Nmax][Mmax]; int N, M; // реальное число строк и столбцов
printf("\n N = "); // ввод реальной размерности матрицы scanf("%d", &N); printf(" M = "); scanf("%d", &M); for (int i = 0; i < N; i++) // блок ввода матрицы for (int j = 0; j < M; j++) { printf(" Mas[%d][%d] = ", i + 1, j + 1); scanf("%d", &Mas[i][j]); }
printf("\n\n Massiv\n"); for (int i = 0; i < N; i++) // блок вывода матрицы { for (int j = 0; j < M; j++) printf("%5d", Mas[i][j]); printf("\n"); } } Вид экрана во время выполнения программы:
N = 3 M = 2 Mas[1][1] = 1 Mas[1][2] = 2 Mas[2][1] = 3 Mas[2][2] = 4 Mas[3][1] = 5 Mas[3][2] = 6
Massiv 1 2 3 44 5 6 Задавая начальное, конечное значение и шаг для номера строки и столбца, можно перемещаться по матрице в любом направлении и обрабатывать любую ее часть. Пример 1. Заполнить нулями выделенную часть матрицы, перемещаясь по строкам слева направо и сверху вниз.
Пример 2. Заполнить нулями выделенную часть матрицы, перемещаясь по строкам сверху вниз и справа налево.
Пример 3. Поменять местами верхнюю и нижнюю половины матрицы, перемещаясь по строкам слева направо и сверху вниз.
Дата добавления: 2014-12-23; Просмотров: 299; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |