Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
for i:=1 to n do writeln(b[i]:3:1);
End.
Как видно из примера, любая программа решения задачи на обработку массива должна обязательно включать следующие части:
1) ввод и вывод исходного массива;
2) обработка элементов массива;
3) вывод обработанного массива.
Каждая из этих частей может встречаться в программе несколько раз.
§8.2. Двумерный массив
Двумерным массивом называется совокупность данных, каждое значение которых зависит от его местоположения в строке и в столбце.
5 | -4 | 3 | 12 |
16 | -8 | 5 | -3 |
-7 | 14 | 9 | 11 |
Двумерный массив описывается указанием имени массива, количества строк и столбцов:
<имя массива>: array [<номера строк>, <номера столбцов>] of <тип элементов>;
Примеры:
а) a, c: array [1..4, 1..7] of real;
б) tabl: array [1..5, 1..3] of integer;
Элемент двумерного массива задается именем массива и указанием номеров строки и столбца, на пересечении которых он находится:
A[1,3] = 3; A[2,1] = 16; A[3,4] = 11
Помни: на первом месте в обозначении элемента массива указывается номер строки, на втором – номер столбца. Так как двумерный массив представляет собой несколько одномерных массивов, то для работы с двумерным массивом необходимо использовать вложенные арифметические циклы. Рассмотрим фрагменты типовых задачи, которые можно производить с массивом a(m, n).
Ввод элементов массива (по строкам)
for i:=1 to m do begin write(‘Введите’,i,’строку’); for j:=1 to n do readln (a[i, j]); end; | {Генерация из [-10, 20]} randomize; for i:=1 to m do for j:=1 to n do a[i, j] := -10+random(31); | {Элемент равен сумме номера строки и столбца} for i:=1 to m do for j:=1 to n do a[i, j]:= i + j; |
Вывод элементов массива
Вывод значений элементов двумерного массива осуществляется по строкам, начиная вывод каждой новой строки массива в новую строку экрана. При этом целесообразно использовать вывод элементов по формату для того, чтобы получались четкие столбцы, независимо от полученных значений элементов массива.
writeln(‘Дан (получен) массив:’);
for i:=1 to m do
begin
for j:=1 to n do write(a[i, j]:5:1);
writeln; {используется для начала новой строки}
end;
Обработка элементов массива
Суммирование элементов (нахождение произведения) s:=0; p:=1; for i:=1 to m do for j:=1 to n do begin s:=s+a[i, j]; p:=p*a[i, j]; end; | Поиск минимального элемента массива и его индекса min:=a[1,1]; ki:=1; kj:=1; for i:=1 to m do for j:=1 to n do if a[i, j] < min then begin min:=a[i, j]; ki:=i; kj:=j; end; | Поиск по ключу k:=0; s:=0; p:=1; for i:=1 to m do for j:=1 to n do if a[i, j]>=4 then begin k:=k+1; s:=s+a[i, j]; p:=p*a[i, j]; end; |
Преобразование массива
Изменение элементов массива, в зависимости от условия for i:=1 to m do for j:=1 to n do if a[i, j]>0 then a[i, j]:=1 else a[i, j]:=-1; | Умножение (деление) строки на число; сложение (вычитание) из строки числа. write(‘укажите строку’); readln(k); for j:=1 to n do a[k, j] := a[k, j]*t; | Сложение (вычитание) строк. К элементам 1-ой строки прибавить элементы 3-е строки. for j:=1 to n do a[1,j]:=a[1,j]+a[3,j]; |
Суммирование элементов массива по строкам (столбцам) и
занесение найденных сумм в одномерный массив
по строкам for i:=1 to m do begin s:=0; for j:=1 to n do s:=s+a[i, j]; d[i]:= s; end; | по столбцам for j:=1 to n do begin s:=0; for i:=1 to m do s:=s+a[i, j]; d[j]:=s; end; |
Аналогично вычисляются сумма, произведение и количество элементов по ключу.
Задание. Чем отличается суммирование по строкам и по столбцам?
Квадратная матрица
Двумерный массив, у которого количество строк равно количеству столбцов называется квадратной матрицей.
У матрицы можно выделить две диагонали:
- главная (проходит из левого верхнего в правый нижний угол таблицы) побочная (проходит из правого верхнего в левый нижний угол таблицы)
Для обработки элементов связанных с диагоналями используют соотношения между индексами элементов i и j на диагоналях:
- главная диагональ: j = i побочная диагональ: j = n – i + 1, где n – количество строк (столбцов) матрицы.
Рассмотрим пример суммирования элементов главной и побочной диагоналей
sglav:=0;
spoboch:=0;
for i:=1 to n do
begin
sglav:=sglav+a[i, i];
spoboch:=spoboch+a[i, n–i+1];
end;
Задание. Найдите соотношения между индексами i и j для элементов выше (ниже) главной и побочной диагоналей.
Вопросы
Что такое массив? В каких случаях для решения задач применяют массивы? Какие бывают массивы, приведите примеры. Как обращаются к элементу массива? Для чего нужно описывать массив в программе и как это делается? Как в программе описать двумерный массив из 4 строк и 9 столбцов; одномерный из 49 элементов? Какие варианты описания массива из 15 чисел Вы знаете? Напишите их. Какая структура используется для работы с одномерными массивами? Охарактеризуйте способы ввода элементов массива. Для чего используется несколько способов? Какие способы вывода элементов одномерного массива Вы знаете? Запишите основные операции обработки одномерного массива. Приведите пример преобразования одномерного массива. Опишите способы сортировки одномерного массива. Из каких обязательных частей должна состоять программа работы с массивом? Что такое двумерный массив? Как задается элемент двумерного массива? Какие конструкции используются для работы с двумерным массивом? Опишите ввод и вывод элементов двумерного массива. Приведите примеры операций обработки двумерного массива. Какими способами можно преобразовать двумерный массив? Как можно связать между собой одномерный и двумерный массивы? Что такое квадратная матрица? Какие бывают диагонали матрицы и как они характеризуются?Задания
Одномерный массив
1. Напишите фрагменты программ генерации массива из 15 элементов:
а) на отрезках: а1) [100, 534], а2) [-256, 33], а3) [-15, 15]; б) номера месяцев в году
в) оценки ученика; г) курс доллара; д) температуры летом
2. Используя ввод элементов массива с помощью оператора присваивания получить следующие массивы из 30 элементов:
а) 1, 0, 1, 0, 1, 0,…
б) 1, 2, 3, 4, 5,…
в) 2, 4, 6, 8, 10,…
г) 30, 29, 28, 27, 26,…
д) 1, -3, 5, -7, 9, -11,…
е) 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5,…
3. Составить блок-схемы по программам
а) ввода; б) вывода; в) обработки; г) сортировки
4. Записать результат, который программа выведет на экран
а) Program massiv_1; var i: integer; x:array [1..10] of integer; Begin for i := 1 to 10 do begin x[i] := 2*i; writeln(x[i]); end; End. | б) Program massiv_2; var i: integer; a:array [1..12] of integer; Begin for i:=12 downto 1 do begin a[i]:= i div 2; writeln(a[i]); end; End. | в) Program massiv_3; var i: integer; b:array [1..10] of integer; Begin for i:=1 to 10 do begin if i mod 2 = 0 then b[i]:= i else b[i] := 0; writeln(b[i]); end; End. |
г) Program massiv_4; var i, s: integer; x:array [1..11] of integer; Begin s:=0; for i := 1 to 11 do begin x[i]:=sqr(i); write(x[i],’; ’); s:= s + x[i]; end; writeln(s); End. | д) Program massiv_5; var i, c: integer; x:array [1..12] of integer; Begin for i:=1 to 12 do x[i]:= i; for i:=1 to 6 do begin c:=x[i]; x[i]:=x[12 – i + 1]; x[12 – i + 1]:=c; writeln(x[i]); end; End. | е) Program massiv_6; var i: integer; a:array [1..15] of integer; Begin for i:=1 to 15 do a[i]:= sqr(i); for i := 1 to 15 do begin if i mod 2 <> 0 then a[i]:=sqrt(a[i]) else a[i]:= a[1]; write(a[i],’; ‘); end; End. |
5. Составить программы решения задач
1. Заполнить массив из 15 элементов своими оценками по любому предмету. Вывести массив на экран.
2. В массиве хранятся сведения в росте 30 человек. Заполнить массив, если известно, что рост самого высокого из этих людей равен 205 см, а самого маленького – 150 см.
3. В массиве хранятся оценки 27 учеников за контрольную работу по математике. Осуществить ввод и вывод элементов массива.
4. Заполнить массив следующим образом: 20, 19, 18, …, 2, 1. Осуществить вывод элементов с нечетными индексами.
5. Заполнить массив числами, кратными 3 или 5 из отрезка [-23, 50]. Вывести на экран положительные элементы массива.
6. Вычислить среднее арифметическое и среднее геометрическое элементов одномерного массива, принадлежащих [a, b]. Количество элементов массива и границы отрезка ввести с клавиатуры.
7. В массиве целых чисел из 25 элементов найти количество максимумов.
8. В массиве из 14 элементов вывести на экран номера минимальных элементов.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |


