Общие понятия о массивах и использование одномерных массивов подробно описаны здесь .
Массив считается двумерным, если для определения местоположения элемента в массиве нужно указать значения двух индексов. Двумерный массив ассоциируется с таблицей. Если количество столбцов и строк массива (таблицы) одинаковое, то массив еще называют матрицей.
Массив считается многомерным, если для определения местоположения элемента в массиве нужно указать значения трех и больше индексов.
2. Пример описания и использования двумерных массивов в программе.
// матрица целых чисел размером 3*4 int Matr[][]; Matr = new int[3][4]; // заполнение ячеек матрицы Matr[0][2] = 23; Matr[0][0] = -220; Matr[2][3] = 380; // матрица вещественных чисел размером 2*3 float[][] MatrF = new float[2][3]; MatrF[0][2] = 9.88f; MatrF[0][0] = -33.8329f;
3. Пример описания двумерного массива альтернативными вариантами
В Java двумерный массив можно описывать разными способами. В данном примере показаны разные варианты описания двумерного массива целых чисел размером 2×3.
Двумерный массив инициализация. Двумерный массив индексы. Синтаксис. Пример. Урок #31
Вариант 1.
// объявление матрицы размером 2*3 int[] Matr[] = new int[2][3];
Вариант 2.
int[][] Matr = new int[2][3];
Вариант 3.
int[][] Matr = new int[2][3];
Вариант 4.
int[][] Matr; Matr = new int[2][3];
Вариант 5.
int[] Matr[]; Matr = new int[2][3];
Вариант 6.
int Matr[][]; Matr = new int[2][3];
Вариант 7.
int Matr[][] = new int[2][]; Matr[0] = new int[3]; Matr[1] = new int[3];
Вариант 8.
int[][] Matr = new int[2][]; Matr[0] = new int[3]; Matr[1] = new int[3];
Вариант 9.
int[] Matr[] = new int[2][]; Matr[0] = new int[3]; Matr[1] = new int[3];
4. Как осуществляется инициализация двумерного массива? Пример
Чтобы осуществить инициализацию двумерного массива нужно инициализатор каждого измерения взять в отдельный ряд фигурных скобок.
В следующем примере объявляется двумерный массив вещественных чисел с именем X . Размер массива 2×3.
// инициализация двумерного массива размером 2*3 float X[][] = < < 0.1f, 0.3f, 1.2f >, < 1.3f, 2.8f, 3.2f >>;
5. Пример объявления двумерного массива, с разным числом элементов в одной строке (разной размерностью второго измерения).
В данном примере объявляется двумерный массив, в котором число элементов в каждой строке есть разным. Затем этот массив заполняется значениями как показано на рисунке.
Рисунок. Массив, в соответствии с условием задачи
// объявление массива, в котором // 3 строки с разной размерностью второго измерения long M[][] = new long[3][]; M[0] = new long[2]; // 2 элемента в нулевой строке M[1] = new long[4]; // 4 элемента в первой строке M[2] = new long[3]; // 3 элемента во второй строке M[0][0] = 10l; M[0][1] = 350l; M[1][0] = 25l; M[1][1] = 45l; M[1][2] = 85l; M[1][3] = 1200l; M[2][0] = 55l; M[2][1] = 450l; M[2][2] = 2500l;
6. Пример объявления многомерных массивов
Многомерные массивы используют 3 и больше индексов для доступа к элементам массива.
Двумерный массив что это. Многомерные массивы. Пример. Теория. Что такое массив. Array. C++ #30
// объявление массива размером 3*2*4 int M[][][] = new int[3][2][4]; // использование массива M[1][1][2] = 23; M[0][0][1] = -12; // объявление массива размером 5*10*15 double[][][] D; D = new double[5][10][15]; D[3][7][11] = -29.33;
7. Пример инициализации многомерного массива
В данном примере инициализируется массив размером 2×3×3.
// инициализация массива размером 2*3*3 byte B[][][] = < < < 0, 1, 2 >, < 1, 2, 3 >, < 3, 4, 5 >>, < < 1, 2, 3 >, < 2, 3, 4 >, < 5, 6, 7 >> >;
8. Пример обнуления двумерной матрицы вещественных чисел размером 5×5
// обнулить матрицу размером 5*5 double Matrix[][] = new double[5][5]; for (int i=0; ifor (int j=0; jlength; j++) Matrix[i][j]=0.0;
9. Пример поиска заданного элемента в матрицы целых чисел размером 10×10
// поиск элемента в матрице short Matrix[][] = new short[10][10]; boolean f_is; short num; // искомый элемент // ввод значения num // . f_is = false; // сначала принимаем, что элемента в матрице нет for (int i=0; ifor (int j=0; jlength; j++) if (Matrix[i][j]==num) f_is = true; // элемент найден
10.
Пример поиска максимального значения в матрице вещественных чисел
// поиск максимума в матрице float Matrix[][] = new float[10][10]; float max; // искомое максимальное значение // . max = Matrix[0][0]; // принять, что max — один из элементов матрицы for (int i=0; ifor (int j=0; jlength; j++) if (Matrix[i][j]>max) max = Matrix[i][j];
11. Пример вычисления суммы элементов двумерной матрицы вещественных чисел
// сумма элементов матрицы float Matrix[][] = new float[10][10]; float sum; // искомая сумма // . sum = 0; for (int i=0; ifor (int j=0; jlength; j++) sum = sum + Matrix[i][j];
12. Пример объявления и использования двумерного массива строк
В языке Java для работы с строками введен специальный класс String . В данном примере приведены разные варианты объявления, инициализации и использования двумерного массива строк.
// объявление двумерного массива строк String M1[][] = new String[5][5]; // создание переменной типа массив // запись информации в массив строк for (int i=0; ifor (int j=0; jlength; j++) M1[i][j] = «Item #» + i + j; // глубокое копирование массивов с помощью метода clone() String M2[][] = M1.clone(); // массивы M1 и M2 указывают на разные участки памяти // объявление и инициализация массива строк размером 3*3 String M3[][] = < < «Item-00», «Item-01», «Item-02» >, < «Item-10», «Item-11», «Item-12» >, < «Item-20», «Item-21», «Item-22» > >; // поверхностное копирование String M4[][]; // описание переменной типа двумерный массив строк M4 = M1; // массивы M1 и M4 указывают на один и тот же участок памяти // изменение в массиве M1 приведет к изменению в массиве M4 и наоборот M1[1][4] = «1111»; // M4[1][4] = «1111» M4[1][4] = «2222»; // M1[1][4] = «2222»
13. Пример объявления и использования двумерного массива классов
В данном примере объявлен двумерный массив классов размером 3×4. Процесс объявления переменной проходит в несколько этапов:
- объявить переменную типа двумерный массив класса MyPoint ;
- выделить память под общую ссылку на классы размером 3×4;
- выделить память под каждый элемент массива, который есть классом.
// объявление переменной mp типа двумерный массив MyPoint[][] mp; // выделение памяти для массива классов размером 3*4 mp = new MyPoint[3][4]; // выделение памяти для каждого элемента массива (класса) for (int i=0; ifor (int j=0; jlength; j++) mp[i][j] = new MyPoint(); // использование массива в программе for (int i=0; ifor (int j=0; jlength; j++) mp[i][j].SetXY(i, j); int d; d = mp[2][2].GetY(); // d = 2 d = mp[1][2].GetX(); // d = 1
Связанные темы
- Одномерные массивы
- Нерегулярные массивы
Источник: www.bestprog.net
12. Двумерные массивы
Если в массиве хранится таблица значений, то такой массив называют двумерным, а его элементы нумеруются двумя индексами – номером строки и номером столбца, на пересечении которых находится данный элемент.
В памяти компьютера все элементы массива занимают одну непрерывную область. Двумерный массив располагается в памяти по строкам.
Двумерный массив можно представить в виде матрицы:
.
12.2. Описание двумерного массива
Для двумерных массивов:
Где a — имя массива;
n, m — количество строк и столбцов в массиве;
— тип элементов массива.
Количество элементов в массиве — nm.
mas: array [1…10,1..10] of real;
Описан массив mas — содержащий 100 элементов вещественного типа (10 строк и 10 столбцов).
Размер массива должен быть задан в явном виде (как в предыдущем фрагменте), или через const.
mas: array[1…n,1..m] of real;
Описан массив mas — содержащий 25 элементов целого типа (5 строк и 5 столбцов).
Каждый элемент массива определяется с помощью двух индексов, стоящих справа от имени в квадратных скобках.
a[i, j] — элемент стоящий на пересечении i-ой строки и j-го столбца.
a[i, i] — элементы главной диагонали.
a[i, 2] — элементы второго столбца.
Индекс может быть — переменной, константой, арифметическим выражением целого типа.
Если количество строк равно количеству столбцов, матрица называется квадратной.
Обработка двумерных массивов производится при изменении индексов элементов.
Все элементы главной диагонали удовлетворяют условию:
(номер строки равен номеру столбца).
Все элементы побочной диагонали удовлетворяют условию:
(n — количество строк и столбцов).
Элементы, расположенные над главной диагональю удовлетворяют условию:
(номер строки строго меньше номера столбца).
Элементы, расположенные под главной диагональю удовлетворяют условию:
(номер строки строго больше номера столбца).
Ввод элементов двумерного массива
Как стать программистом
Это моя личная ссылка-приглашение на Stepik для вас. Регистрируясь по этой ссылке, записываясь на курсы и решая задачи, Вы помогаете автору данного сайта принять участие в конкурсе платформы Stepik! Подробности конкурса здесь: https://vk.cc/75rKuS
воскресенье, 27 октября 2013 г.
Занятие 19. Двумерные массивы.
Добрый день друзья.
Сегодня затронем новую тему. Двумерные массивы. Или их еще называют матрицы.
Прочитайте улучшенную версию этого урока «Двумерные массивы».
- Ещё более доступное объяснение
- Дополнительные материалы
- 10 задач на программирование с автоматической проверкой решения
Что такое двумерный массив?
Двумерный массив это прямоугольная таблица с определенным количеством строк и столбиков. Каждая строка и каждый столбик имеют свой порядковый номер. На рисунке изображен двумерный массив, который имеет 6 строк и 7 столбцов.
Рис.1. Двумерный массив. Общий вид. |
Обратите внимание, что столбцы и строки нумеруются, начиная с нуля, как и в одномерных массивах.
Сразу же покажу, как объявить двумерный массив. В сущности, ничего нового. Синтаксис прост и очень похож на объявление обычного массива и любой другой переменной. Сначала указываем тип данных, затем имя массива, а после в квадратных скобках его размерность, то есть количество строк и количество столбиков. На рисунке ниже мы объявили двумерный массив размерностью 6 на 7.
Рис.2 Двумерный массив, объявление. |
Важно помнить, что первая строка и первый столбик имеют индекс нуль, поэтому последняя строка будет иметь номер не шесть, а пять, и аналогично последний столбец будет иметь номер шесть, а не семь.
Кстати, нельзя путать местами строки и столбики. Сначала записывается количество строк, потом количество столбиков.
Следующий естественный вопрос:
Как работать с двумерным массивом?
Как и другие переменные, двумерные массивы мы можем инициализировать при их объявлении. Для этого нам нужно указать все элементы массива. Делается это следующим образом.
Листинг 19.1
int arr [2][4] = <,>;
Записанный выше код создает массив с двумя строчками и четырьмя столбцами, и присваивает каждому элементу определенные значения. Получится вот такой массив.
Рис.3. Двумерный массив инициализированный при объявлении |
Кроме того, мы можем задать только некоторые элементы массива, тогда остальные будут заполнены нулями. Например:
Листинг 19.2
int arr [2][4] = <,>;
Рис.4. Двумерный массив, инициализированный не полностью. |
Понятно, что если у нас будет большой массив, то мы замучаемся так все записывать. Да и редко такое бывает нужно.
Как работать с отдельным элементом массива.
Понятно, что любой элемент задается номер строки и столбца, на пересечении которых он расположен. Посмотрите на следующий рисунок. На нем мы выбрали элемент, который находится во второй строке и третьем столбике (в естественной нумерации).
Рис.5. Обращение к элементу двумерного массива. |
Обращение к конкретному элементу происходит так же, как и в одномерном массиве. Сначала пишут имя массива, а затем, в квадратных скобках номер строки и номер столбика. Опять напоминаю, сначала идет номер строки, а потом номер столбика. Не путайте это. А так же, помните, что нумерация идет не с единицы, а с нуля.
Это очень частая ошибка, всегда следите за этим.
Помните, когда мы хотели пройтись по всему одномерному массиву, мы использовали цикл for , который изменял наш индекс. Так как в двумерном массиве у нас два индекса ( один для строки и один для столбца), то для того, чтобы пройтись по всему массиву нам потребуется два вложенных цикла for . Разберите следующий пример.
Листинг 19.3
int arr [2][4] = <,>;
Данная программа, выводит последовательно все элементы массива. Результат её работы, представлен на следующем рисунке.
Рис.6. Двумерный массив. Поэлементный вывод на экран. |
Как работает вложенный цикл, вам уже должно быть понятно.
Сначала переменной i присваивается значение нуль, проверяется условие 0
Проверка условия 1
Используя вложенные циклы, мы можем и заполнять двумерные массивы.
Зачем нужны двумерные массивы?
Двумерные массивы используются для хранения данных одинакового типа и одинаковой структуры. Приведу пример.
В одном из практических заданий к прошлым урокам, необходимо было составить программу, которая хранила оценки ученика по разным предметам. Для их хранения в памяти компьютера мы использовали несколько одномерных массивов. Это было не очень удобно. Для этих же целей, мы могли использовать двумерный массив.
Например, нам нужно хранить оценки ученика по русскому, математике, физике и информатике, за целый месяц. Для этого мы создадим массив с 4 строками и 30 столбиками (или наоборот, 30 строк и 4 столбика, кому как больше нравится), и в каждую отдельную строчку будем записывать оценки по какому либо предмету. Это гораздо удобнее и практичнее.
Например, рассмотрим такую задачку. Пусть нам нужно было бы найти среднее арифметическое всех оценок по всем предметам. Если бы у нас было четыре одномерных массива, то нам пришлось бы писать четыре цикла, в каждом из них считать среднее арифметическое оценок по одному предмету, потом находить среднее арифметическое этих четырех чисел. Если оценки у нас хранятся в двумерном массиве, нам достаточно будет просто пройтись по всем элементам массива, используя два вложенных цикла for , и найти среднее арифметическое.
Но это еще не всё. Представьте, что вы хотите добавить один предмет и снова посчитать среднюю арифметическую оценку для всех предметов. Сколько мороки будет, если вы храните оценки в одномерных массивах. Вам придется кучу изменений вносить, дописывать еще один цикл (а вдруг добавилось 7 предметов?). Потом еще среднее искать между этими цифрами.
Другое дело если вы храните оценки в двумерном массиве. Всего лишь изменить условие в одном из циклов. Поменять одно число, представляете как удобно?
Напишите в комментариях пожалуйста, понятен ли вам этот пример, или лучше его подробно расписать?
Если этот материал кажется вам полезным, расскажите о нем друзьям используя кнопки основных социальных сетей, расположенные ниже.
Напишите программу, работающую следующим образом. Создайте массив 10 на 10. Заполните его нулями. Считайте два произвольных целых числа с клавиатуры, меньших либо равных 10. Первое число количество строк, второе — количество столбцов. Напишите функцию, которая заполняет массив по спирали и выводит его на экран.
Т.е. если бы мы ввели 6 и 7, то получили бы следующий массив.
При этом табличка приблизительно должна быть выровнена по центру окна вывода.
Готовое решение пользователя с ником «Дмитрий». За проявленное упорство и трудолюбие, и как первый выполнивший правильно практическое задание, Дмитрий награждается печенькой:
Источник: www.youngcoder.net