Работа с элементами массива. Принципы работы с двумерными массивами Для обработки двумерных массивов могут применяться методы решения задач, рассмотренные.

Презентация:



Advertisements
Похожие презентации
Доступ к элементам массива Изменение элементов массива.
Advertisements

Двумерные массивы Понятие двумерного массива Описание типа двумерного массива Формирование двумерного массива.
A[1,1]A[1,2]A[1,3]A[1,4]A[1,5] A[2,1]A[2,2]A[2,3]A[2,4]A[2,5] A[3,1]A[3,2]A[3,3]A[3,4]A[3,5] A[4,1]A[4,2]A[4,3]A[4,4]A[4,5] Двумерный массив можно представить.
Двумерные массивы. Массивы, положение элементов в которых описывается двумя индексами, называются двумерными. Их можно представить в виде прямоугольной.
Одномерные массивы Решение задач. Табличный способ организации данных Одномерные и двумерные массивы.
Перестановка элементов двумерного массива. Поменять местами столбцы с номерами m1 и m2 Эту задачу можно реализовать несколькими способами. Составим две.
Двумерные массивы. В математике часто используют многомерные массивы, т.е. массивы массивов. Особенно широкое распространение получили двумерные массивы.
Тематический блок «Программирование» ЕГЭ-2015 Задания 19, 20, 21, 25.
Двумерные массивы Обработка относительно диагоналей.
Вставка и удаление строк и столбцов. Вставка строки (для столбцов - аналогично) k Первые k строк оставить без изменения. k (k+1) Все строки после k-ой.
Матрицы 1. 2 Задача: запомнить положение фигур на шахматной доске abcdefgh
const n=10; var a:array[1..n] of integer; i,j,c,b,k:integer; begin randomize; for i:=1 to n do begin a[i]:=random(11)-5;write(a[i]:5) end;writeln;
1 Программирование на языке Паскаль Матрицы. 2 Задача: запомнить положение фигур на шахматной доске abcdefgh
Алгоритм удаления из массива максимального элемента найти номер максимального элемента k; сдвинуть все элементы, начиная с k-го, на один элемент влево;
1. Чем двумерный массив отличается от одномерного? 2. Что означает запись: а) А(2,3); б) В(I,J)=5; в) В (G,N) при G=5, N=4. 3. Что такое матрица? 4. Какая.
Массивы 9 класс. Основные теоретические сведения Примеры решения задач.
5.Дана матрица А и вектор Х соответствующих размерностей. Нечетные строки матрицы заменить элементами вектора Х. Результаты работы: n=4 m=
Индекс – величина, характеризующая положение элемента, относительно начала массива. МАССИВЫ Конечная, упорядоченная по номерам совокупность значений, объединенных.
Шутилина Л.А., A[1,1]A[1,2]A[1,3]A[1,4]A[1,5] A[2,1]A[2,2]A[2,3]A[2,4]A[2,5] A[3,1]A[3,2]A[3,3]A[3,4]A[3,5] A[4,1]A[4,2]A[4,3]A[4,4]A[4,5]
Перестановка элементов массива Перестановка для одного и двух массивов.
Транксрипт:

Работа с элементами массива

Принципы работы с двумерными массивами Для обработки двумерных массивов могут применяться методы решения задач, рассмотренные в теме "Одномерные массивы". Поскольку положение элемента в двумерном массиве описывается двумя индексами (первый - номер строки, второй - номер столбца), программы большинства задач строятся на основе вложенных циклов.

Найти максимальный элемент массива и его индексы Procedure Maximum(X : MyArray; n, m : integer; Var Max, Maxi, Maxj : integer); Var i, j : integer; Begin Max := X[1, 1]; {Предположим, что максимумом является первый элемент} Maxi := 1; {в этом случае запомним первую строку} Maxj := 1; {и первый столбец} For i := 1 to n do For j := 1 to m do if X[i, j] > Max {если среди элементов массива нашелся больший элемент, то} then begin Max := X[i, j];{внесем новое значение в переменную Мах} Maxi := i; {и не забудем запомнить индексы строки} Maxj := j; {и столбца этого элемента} end; End;

Найти количество отрицательных элементов в каждой строке (вариант 1) Procedure KolOtr1(X : MyArray2; n, m : integer; Var Y : MyArray1); Var i, j : integer; Begin For i := 1 to n do begin Y[i] := 0; {записываем начальное значение количества элементов в соответствующую столбцу ячейку} For j := 1 to m do if X[i, j] < 0 {если отрицательный элемент найден} then Inc(Y[i]); {то увеличиваем текущее значение на единицу} end; End;

Найти количество отрицательных элементов в каждой строке (вариант 2) Procedure KolOtr2(X : MyArray2; n, m : integer); Var i, j, k : integer; Begin For i := 1 to n do begin k := 0; For j := 1 to m do if X[i, j] < 0 then Inc(k); writeln(i,' - ', k); end; End;

Определить, есть ли в заданном массиве элемент, равный 0 (логика) Function Check1(X : MyArray; n, m : integer) : Boolean; Var i, j : integer; Flag : Boolean; Begin Flag := False; {Предполагаем, что искомого элемента в массиве нет} i := 1; while not(Flag) and (i 0) do {перебираем все элементы текущей строки, пропуская ненулевые элементы} Inc(j); Flag := not(j=m+1);{если искомый элемент найден, то переменной Flag присваиваем значение True} Inc(i); end; Check1 := Flag; End;

Решение задач Найти сумму и количество элементов с заданным условием (хранить эти значения в массивах): элементы каждого столбца, кратные k1 или k2; максимальные элементы каждой строки; отрицательные элементы каждой строки;

Определить, является ли данный квадратный массив симметричным относительно своей главной диагонали. В задачах подобного типа необходимо увидеть зависимость между индексами элементов массива. Для этого удобно представить массив в виде таблицы, обозначив элементы, например, буквой а и написав рядом их индексы.

Заметим, что если массив является симметричным, то для него выполняется равенство A[i, j]=A[j, i] для всех i=1,..., n и j=1,..., n. Поэтому можно составить следующую функцию Function Check2(X : MyArray; n, m : integer) : Boolean; Var i, j : integer; Flag : Boolean; Begin Flag := True; {Предполагаем, что матрица симметрична} i := 2; while Flag and (i<n) do begin j := 1; while (j<i) and (X[i, j]=X[j, i]) do Inc(j); Flag := (j=i); Inc(i); end; Check2 := Flag; End;

В массиве размерностью NxM к элементам четных столбцов прибавить элемент первого столбца соответствующей строки Procedure Izmenenie1(Var X : MyArray2; n, m : integer); Var i, j : integer; Begin for i := 1 to n do for j := 1 to m div 2 do Inc(X[i, 2*j], X[i, 1]); End;

Заменить все отрицательные элементы на противоположные Procedure Izmenenie2(Var X : MyArray2; n, m : integer); Var i, j : integer; Begin for i := 1 to n do for j := 1 to m do X[i, j] := Abs(X[i, j]); End;

Заполнение массива по правилу Заполнить массив А размером NxM "змейкой" следующим образом: Для того, чтобы заполнить, надо вывести правило заполнения, а оно в данном случае будет таким: если ряд нечетный, то A[i, j]=(i-1)*m+j; если ряд четный, то A[i, j]=i*m-j+1.

Процедура заполнения Procedure FillArray(Var X : MyArray2; n, m : integer); Var i, j : integer; Begin for i := 1 to n do for j := 1 to m do if i mod 2 =1 then A[i, j]=(i-1)*m+j else X[i, j]=i*m-j+1; End;