МАССИВЫ
Пример объявления несколько переменных типа массив:
Пример: VAR Y:ARRAY[1..5] of integer;
Пример объявления массивов содержащих элементы различных типов, и индексы различных простых типов:
Извлечения и присвоения в массивах
П Р И М Е Р 1: Дана последовательность реальных чисел s1 ... s10. Организовать массив для хранения этих чисел. Определить сумму
Пример 2: программа, которая сначала вводит 10 реальных чисел, организовывает их хранение в массиве, определяет количество
Пример 3:
Пример 3
Задания для самостоятельного выполнения
ПОИСК МАКСИМАЛЬНОГО И МИНИМАЛЬНОГО ЭЛЕМЕНТОВ В МАССИВЕ.
Поиск элемента в неупорядоченном массиве
Задания для самостоятельного выполнения
Задания для самостоятельного выполнения
Алгоритм сортировки выбором по возрастанию
СОРТИРОВКА МАССИВА ПО ВОЗРАСТАНИЮ МЕТОДОМ ПРЯМОГО ВЫБОРА
СОРТИРОВКА МАССИВА ПО ВОЗРАСТАНИЮ МЕТОДОМ ПРЯМОГО ВЫБОРА
СОРТИРОВКА МАССИВА ПО ВОЗРАСТАНИЮ МЕТОДОМ ПРЯМОГО ВЫБОРА
Сортировка методом пузырька
Сортировка массива целых чисел по возрастанию методом «пузырька»
Сортировка массива целых чисел по возрастанию методом «пузырька»
Задания для самостоятельного выполнения
Поиск элемента в упорядоченном массиве
Алгоритм деления пополам
Алгоритм деления пополам
Алгоритм деления пополам
Задания для самостоятельного выполнения
Задания для самостоятельного выполнения
Двумерные массивы
Рассмотрим двумерный массив А Объявите данный массив.
Пример 1:Дана матрица действительных чисел размером 3x5. Вычислить сумму элементов матрицы.
Задания для самостоятельного выполнения.
Составить программу, которая в двумерном массиве случайных чисел находит в каждой строке наибольший элемент и записывает его в
Задания для самостоятельного выполнения.
Квадратная матрица
Основные свойства квадратной матрицы
Основные свойства квадратной матрицы
Написать программу, позволяющую получить матрицу следующего вида:
Написать программу, позволяющую получить матрицу следующего вида:
Написать программу, позволяющую получить матрицу следующего вида:
Написать программу, позволяющую получить матрицу следующего вида:
Написать программу, позволяющую получить матрицу следующего вида:
На основе изученных блоков сформировать и распечатать матрицы следующего вида:
Задания для самостоятельной работы
2.01M
Category: programmingprogramming

Массивы. Основы алгоритмизации и программирования

1. МАССИВЫ

Основы алгоритмизации и программирования

2.

Массив - это большое пространство чего-то
однородного по типу.
( Из словаря иностранных слов, 1954 г.)
Массив в программировании - это структура
данных, представляющая собой упорядоченную совокупность значений одного типа.
( Из Оксфордского словаря английского языка, 1995 г.)

3.

Массив - это переменная,образованная
последовательностью переменных,
причём:
• все
они имеют один и тот же тип;
• каждый компонент имеет свой номер;
• множество индексов конечно, зафиксировано в
определении массива;
• возможность обработки компонента, его доступность не
зависит от его места в последовательности.

4.

В математике и информатике массив
называется одномерным, если для
получения доступа к его элементам
достаточно одной индексной перемен
ной.

5.

Описание (объявление) одномерного
массива в Паскале:
Первый способ:
Const MaxM = ...; {Максимальные значения количества элементов}
Type <имя типа> = Array[1..МахМ] Of <тип элементов>;
Var А1, В2, С3: <имя типа> ;
Например:
Const MaxM = 10;
Type А = Array[1..МахМ] Of integer;
Var M: A;
Второй способ:
Const MaxM = ...; {Максимальные значения количества элементов}
Var <имя массива>:Array[1..MaxN] Of <тип элементов>;
Например:
Const MaxM = 10;
Var А: Array[1..МахМ] Of integer;

6. Пример объявления несколько переменных типа массив:

VAR
mas_1: ARRAY[1..10] OF Real;
mas_2: ARRAY[5 .. 16] OF Integer;
sst: ARRAY[20..40] OF Char;
Тип элементов, составляющих массив, может быть
любым (в том числе и сложным).
Тип индексов элементов массива может быть только
простым, хотя наиболее часто в качестве индексов
элементов массива применяют целые числа.

7. Пример: VAR Y:ARRAY[1..5] of integer;

Объявлен массив, имя которого Y, содержащий 5 элементов
целого типа.
Каждому элементу массива соответствует отдельная ячейка
памяти, обращение к которой возможно также как и к обычной
ячейке, имеющей имя какой-либо переменной, т.е по имени.

8. Пример объявления массивов содержащих элементы различных типов, и индексы различных простых типов:

VAR
mas: array [1..15] of real; {описан массив из 15
вещественных чисел}
www: array [(mon,tue,wed)] of integer; {описан массив из
трёх целых чисел, индексы элементов массива
имеют перечислимый тип и принимают значение
названий дней недели mon, tue, wed}
ast: array ['A'..'Z'] of boolean; {описан массив элементов
логического типа, тип индексов - ограниченый
символьный}
art: array [(black,white)] of 11..20; {описан массив целых
чисел с индексами black, white. Каждый элемент
массива может принимать значения от 11 до 20}
svz: array [byte] of integer; {описан массив из 256 целых
чисел с индексами стандартного типа byte (от 0 до

9. Извлечения и присвоения в массивах

В отличие от стандартных переменных массивы не могут
обрабатываться целиком. Но Вы можете получить доступ
к каждому элементу-ячейке массива. Это выполняется
путём указания значения индекса в квадратных скобках.
Так например, с помощью оператора mas[2]:=34; элементу
массива с индексом 2 присваивается значение 34.
Оператор Writeln(mas[2]); вызовет вывод на экран
пользователя значение хранящегося в элементе-ячейке №
2 массива mas.
Наряду с конкретным значением (конcтантой) в качестве
индекса может быть использована переменная, например,
при обработке массива поэлементно в рамках цикла "FOR
... TO ... DO".
С помощью фрагмента программы
FOR i:=1 TO 25 DO mas[i]:=0; всем элементом массива
присваивается значение "0".

10.

11.

ВВОД МАССИВА:
Program vvod;
Const maxM=10;
Var tab1: array[1..maxM] of integer;
i: integer;
Begin
For i:=1 to maxM do
begin
writeln('Введите элементы массива ');
readln(tab[i]);
end;
End.

12.

ВЫВОД
МАССИВА:
Program vivod;
Const maxM=10;
Var tab1: array[1..maxM] of integer;
i: integer;
Begin
For i:=1 to maxM do
begin
writeln('Вывод элементов массива ');
writeln (tab[i]);
end;
End.

13. П Р И М Е Р 1: Дана последовательность реальных чисел s1 ... s10. Организовать массив для хранения этих чисел. Определить сумму

этих элементов.
PROGRAMM ex_1;
VAR
m: ARRAY[1..10] of real; {декларация массива}
i: integer; {параметр цикла FOR}
s: real; {сумма элементов}
BEGIN
FOR i:=1 TO 10 DO {заполнение массива}
Begin
Write('Введите элемент последовательности № ',i);
Readln(m[i]); End;
s:=0; {обнуление счётчика суммы}
FOR i:=1 TO 10 DO s:=s+m[i]; {вычисление суммы}
Write('Сумма элементов последовательности равна ',s);
Readln; { пауза } END.

14. Пример 2: программа, которая сначала вводит 10 реальных чисел, организовывает их хранение в массиве, определяет количество

положительных
элементов и выдаёт сообщение на экран.
PROGRAMM ex_2;
VAR m: ARRAY[1..10] of real; {декларация массива}
i: integer; {параметр цикла FOR}
n: integer; {счётчик положительных эл-ов}
BEGIN
Writeln('Введите 10 элементов последовательности через
пробел’);
FOR i:=1 TO 10 DO {заполнение массива}
Read(m[i]);
n:=0; {обнуление счётчика п. эл-ов}
FOR i:=1 TO 10 DO if m[i]>=0 then n:=n+1; {вычисление количества
п. эл-ов}
Write('Последовательность содержит ',n,' положительных эл-ов');
Readln; { пауза }
END.

15. Пример 3:

16. Пример 3

17.

Пример 4:
Задан одномерный массив К[1..10], определить сумму
отрицательных элементов.
Program Poisk;
Const maxM=10;
Var К: array[1..maxM] of integer;
i,S: integer;
Begin
For i:=1 to maxM do
begin
writeln('Введите элементы массива ');
readln(К[i]);
end;
S:=0;
for i:=1 to maxM do
if К[i]<0 then S:=S+ К[i];
writeln('S=',S)
End.

18. Задания для самостоятельного выполнения

1.
2.
3.
4.
5.
Найти сумму отрицательных элементов массива из
N вещественных чисел.
Найти количество отрицательных элементов
массива из N целых чисел.
Найти сумму квадратов положительных элементов
одномерного массива из N вещественных чисел.
Преобразовать одномерный массив вещественных
чисел, уменьшив каждый элемент на абсолютную
величину среднего значения элементов массива.
Преобразовать одномерный массив вещественных
чисел, занеся в каждый элемент сумму всех
предыдущих элементов (в первый элемент
необходимо поместить значение 0).

19.

Генерация элементов массива с помощью
функции случайных чисел.
.
.
Program vvod2;
Const maxM=10;
Var tab1: array[1..maxM] of integer;
i: integer;
Begin
Randomize;
For i:=1 to maxM do
begin
Tab1[i]:=random(101);
{Функция random(101) генерирует целые
числа в диапазоне от 0 до 100}
write(tab1[i]: 5);
end;
End.

20. ПОИСК МАКСИМАЛЬНОГО И МИНИМАЛЬНОГО ЭЛЕМЕНТОВ В МАССИВЕ.

Дан одномерный массив K из 10 целых элементов, найти максимальный элемент и
его индекс.
Решение:
Program Poisk_2;
Const maxM=10;
Var К: array[1..maxM] of integer;
Max, i, j: integer;
Begin
Randomize;
For i:=1 to maxM do
begin
К[i]:=random(101);
end;
Max:=K[1];
J:=1;
for i:=2 to maxM do
if Max<K[i] then begin max:=K[i]; j:=i; end;
writeln('Максимальный элемент=', max);
writeln('Индекс макс. элемента=', j);
End.
write(К[i]:5);

21. Поиск элемента в неупорядоченном массиве

VAR m: ARRAY[1..30] of real; {декларация массива}
i: integer; {параметр цикла FOR}
p: real; {значение искомого элемента}
t: integer; {индекс (номер) иском. элемента}
BEGIN
FOR i:=1 TO 30 DO {заполнение массива} Begin
Write('Введите элемент последовательности № ',i);
Readln(m[i]); End;
Write('Введите контрольное число '); Readln(p);
t:=0; {допустим, что в массиве нет такого элемента}
FOR i:=1 TO 30 DO if m[i]=p then {проверка нашего
утверждения} begin t:=i; write('Эл. №',i,' равен искомому');
end;
if t=0 then write('В массиве нет такого элемента');

22. Задания для самостоятельного выполнения

1.
2.
3.
4.
5.
Напишите программу, которая вводит с клавиатуры 20 реальных чисел, и
организовывает их хранение в массиве. После этого определяет сумму
элементов, значение которых больше среднего арифметического
элементов массива.
Напишите программу, которая вводит с клавиатуры 15 реальных чисел,
организовывает их хранение в массиве и определяет разность между
максимальным и минимальным элементом массива.
Напишите программу, которая вводит с клавиатуры 15 реальных чисел,
организовывает их хранение в массиве и определяет индексы (номера)
элементов массива, значение которых равно значению первого элемента
массива. Если такого элемента нет, вывести соответствующее сообщение
на экран.
Напишите программу, которая вводит с клавиатуры 10 целых чисел,
организовывает их хранение в массиве и определяет количество чётных
и количество нечётных элементов в массиве.
Напишите программу, которая вводит с клавиатуры 30 реальных чисел и
определяет среднее арифметическое первых десяти элементов, вторых
десяти и последних десяти. После этого определяется максимальное и
минимальное среднее арифметическое и выводится сообщение.

23. Задания для самостоятельного выполнения

6.
7.
8.
9.
Сгенерировать 2 одномерных массива по 23 элемента в каждом. Вывести
их на экран. Подсчитать, где больше сумма. Вывести суммы и
соответствующее сообщение .
Сгенерировать одномерный массив из 30 элементов в диапазоне от 1 до
20. Вывести его на экран. Определить сумму элементов больших 12,
произведение элементов меньших 12 и вывести соответствующие
результаты на экран.
В группе 15 учащихся. Составить два массива, в 1-ом массиве -фамилии
учащихся, во втором массиве- оценки по ОИВТ. Вывести значения
массивов в следующем виде:
ФИО,
бал успеваемости.
Дан одномерный массив, состоящий из 10 элементов. Получить
новый массив, в котором будут сначала положительные, а затем
отрицательные значения первого массива

24.

Сортировка массива - это расстановка элементов
массива в некотором порядке.
Убывающий порядок - каждый следующий элемент
должен быть меньше предыдущего.
Невозрастающий - каждый следующий элемент
должен быть не больше предыдущего.
Возрастающий - каждый следующий элемент больше
предыдущего.
Неубывающий - каждый следующий элемент не
меньше предыдущего.

25. Алгоритм сортировки выбором по возрастанию

Очевидно, что первое место в массиве должен занять
минимальный элемент массива, второе наименьший из всех остальных, третий наименьший из оставшихся и т.д. Для этого
необходимо выполнить следующую
последовательность действий:
1. Определить минимальный элемент массива;
2. Поменять его местами с первым элементом;
3. Определить минимальный элемент среди
оставшихся;
4. Поменять его местами со вторым элементом и
т.д.;

26. СОРТИРОВКА МАССИВА ПО ВОЗРАСТАНИЮ МЕТОДОМ ПРЯМОГО ВЫБОРА

CONST
SIZE=5; {размер массива}
Var
a:array[1..SIZE] of integer;
i:integer; {номер элемента, от которого ведется поиск }
{минимального элемента}
min:integer;{номер минимального элемента в части массива}
{ от i до верхней границы массива}
j:integer; {номер элемента, сравниваемого с минимальным}
buf: integer; {буфер, используемый при обмене элементов}
{массива}
k: integer; {индекс для ввода и вывода}

27. СОРТИРОВКА МАССИВА ПО ВОЗРАСТАНИЮ МЕТОДОМ ПРЯМОГО ВЫБОРА

Begin
writeln(‘ Введите в одной строке ’,SIZE,’ целых чисел’);
for k:=1 to SIZE do read(a[k]);
writeln(‘ Сортировка’);
for i:=1 to SIZE-1 do begin
{поиск минимального элемента в части
массива от
a[i] до a[SIZE]}
min:=i;
for j:=i+1 to SIZE do if a[j]<a[min] then min:=j;
{поменяем местами a[min] и a[i]}
buf:=a[i];
a[i]:=a[min];
a[min]:=buf;
end;

28. СОРТИРОВКА МАССИВА ПО ВОЗРАСТАНИЮ МЕТОДОМ ПРЯМОГО ВЫБОРА

{вывод отсортированного массива}
writeln(‘ Массив отсортирован’);
for k:=1 to SIZE do write(a[k]:4);
readln;
End.

29. Сортировка методом пузырька

Алгоритм так называемой "пузырьковой" сортировки более
оригинален и в большинстве случаев более эффективен. При
использовании этого алгоритма весь массив просматривается
несколько раз подряд. При каждом таком просмотре сравниваются
последовательно только соседние элементы массива: сначала
первый со вторым, потом второй с третьим, и в конце
предпоследний с последним. Если при сравнении окажется, что
предыдущий элемент больше следующего, они меняются местами.
Так в результате одного последовательного просмотра элементы,
значение которых больше, "всплывают" образно говоря на
поверхность, т.е. ближе к концу массива. Если провести такой
последовательный просмотр массива несколько раз, то "тяжёлые"
элементы окончательно "всплывут" и массив окажется
отсортированным. Такой просмотр необходимо выполнять до
полной сортировки, т.е. пока при просмотре элементы не будут
меняться местами. Для этого удобно организовать логическую
переменную ind, и присваивать ей значение ложь в случае, если
замена происходила хотя бы один раз. Если значением этой
переменной останется истина, то просмотры необходимо
прекратить.

30. Сортировка массива целых чисел по возрастанию методом «пузырька»

CONST
SIZE=5; {размер массива}
Var
M:array[1..SIZE] of integer;
i:integer;
buf: integer; {буфер, используемый при обмене элементов}
{массива}
ind:boolean;
Begin
writeln(‘ Введите в одной строке ’,SIZE,’ целых чисел’);
for i:=1 to SIZE do read(m[i]);
writeln(‘ Сортировка’);

31. Сортировка массива целых чисел по возрастанию методом «пузырька»

REPEAT
ind:=true; {предположим, что массив уже отсортирован}
FOR i:=1 TO SIZE-1 DO {цикл для организации просмотра}
if m[i]>m[i+1] then {сравнение двух соседних элементов}
begin buf:=m[i]; {меняем соседние элементы
местами}
m[i]:=m[i+1];
m[i+1]:=buf;
ind:=false; {как оказалось, массив неотсортирован}
end;
UNTIL ind; {выполняем просмотры пока ind=false}
{вывод отсортированного массива}
writeln(‘ Массив отсортирован’);
for i:=1 to SIZE do write(m[i]:4);
readln;
End.

32. Задания для самостоятельного выполнения

1. Организуйте массив, содержащий 20 различных целых чисел.
После этого элементы массива упорядочиваются по убыванию и
содержимое отсортированного массива выводится на экран.
2. Организуйте массив, содержащий 20 различных целых чисел.
После этого 10 первых элементов массива упорядочиваются по
возрастанию, а 10 последних элементов по убыванию.
Содержимое отсортированного таким образом массива выводится
на экран.
3. Организуйте массив, содержащий 15 различных целых чисел.
После этого отдельно первых 5 элементов, вторых 5 элементов и
последних 5 элементов сортируются по возрастанию. Содержимое
отсортированного таким образом массива выводится на экран.
4. Создайте массив, содержащий 10 различных целых чисел.
Содержимое массива сортируется по возрастанию, и после этого
определяются минимальный и максимальный элементы массива.

33. Поиск элемента в упорядоченном массиве

Рассмотрим наиболее часто встречающуюся задачу поиска
необходимого элемента в отсортированном массиве, и
алгоритм её решения.
Дан отсортированный по возрастанию массив вещественных
чисел A состоящий из n элементов. Определить, содержит
ли данный массив число B, и если содержит, то
определить номер (индекс) данного элемента в массиве.
Предположим, что в массиве A имеется элемент, равный B,
т.е. существует такой индекс p, что A[p]=B. По результату
любого сравнения A[s]<B (1<s<n) мы сразу определяем,
лежит ли p в диапазоне от 1 до s, или же в диапазоне от
s+1 до n: второе будет иметь место, если неравенство
A[s]<B справедливо, а первое - если не справедливо. Это
свойство данного сравнения используется в алгоритме
деления пополам.

34. Алгоритм деления пополам

Первоначально номера крайних элементов массива 1 и n
берут в качестве границ поиска элемента; далее, до тех
пор, пока границы не совпадут, шаг за шагом сдвигают
эти границы следующим образом:
сравнить B с A[s], где s - целая часть среднего
арифметического границ;
если A[s]<B, то заменить прежнюю нижнюю границу на s+1,
оставив верхнюю границу без изменения,
иначе оставить без изменения нижнюю границу, а верхнюю
границу заменить на s.
Поиск закончится когда границы совпадут.

35. Алгоритм деления пополам

Var a:array[1..10] of integer;
b: integer; {образец для поиска}
p,q,s: integer; {номера верхнего, нижнего и среднего
элементов массива}
i: integer;
f:boolean; {признак совпадения с образцом}
Begin
writeln(‘ Введите в одной строке 10 целых чисел’);
for i:=1 to 10 do read(a[i]);
writeln(‘ Введите образец для поиска (целое число)’);
Readln(b);
p:=1; q:=10;
f:=false;

36. Алгоритм деления пополам

Repeat
s:=(p+q) div 2;
if a[s]=b then f:=true
else
{в какой части, в верхней или нижней, может
находиться искомый элемент?}
if b>a[s] then p:=s+1 else q:=s;
Until (p>q) or f;
If f then writeln(‘совпадение с элементом номер ‘, s)
else writeln(‘образец не найден’);
Readln;
End.

37. Задания для самостоятельного выполнения

1.
2.
Напишите программу, которая организует хранение в массиве
15 различных введённых с клавиатуры целых чисел.
Содержимое массива сортируется по возрастанию. После
этого, с клавиатуры запрашивается контрольное число, наличие
которого в массиве необходимо проверить. Номер элемента
массива, в положительном случае, выводится на экран
монитора.
Напишите программу, которая организует хранение в массиве
10 различных целых чисел. Содержимое массива сортируется
по возрастанию. После этого, с клавиатуры вводится
контрольное число. Наличие которого в массиве необходимо
проверить. В положительном случае замените элемент
массива, равный контрольному числу, нулём. Содержимое
массива выводится на монитор.

38. Задания для самостоятельного выполнения

3.
4.
Напишите программу, которая организует хранение в массиве
15 различных введённых с клавиатуры целых чисел.
Содержимое массива сортируется по убыванию. После этого, с
клавиатуры запрашивается контрольное число, наличие
которого в массиве необходимо проверить. На экран монитора
выводится содержимое массива до "контрольного числа"
включительно.
Дан массив из 10 целых чисел. Отсортируйте его и найдите в
нём контрольное число. Все элементы до контрольного числа
замените на противоположные.

39.

массив этоа) Конечное число элементов.
б) Упорядоченное множество элементов разного типа.
в) Конечное упорядоченное множество элементов
одного типа.
Одномерный массив описывается:
а) Var tab1: array[1..78] of integer;
б) var tab1: array[1..5] ;
в) Var tab1= array[1..13] of integer;

40.

Индекс элементов массива может быть:
а) целым числом;
б) вещественным числом;
в) целым положительным.
Как обратиться к 5 элементу массива с именем Е?
а) 5(Е);
б) Е[1..5];
в) Е[5].

41.

Двумерные массивы
Чтобы представить себе двумерный массив,
вспомните зрительный зал кинотеатра.
Название кинотеатра – имя массива.
Ряд, место - индексы.
Человек на
определенном месте
– элемент массива.

42. Двумерные массивы

Двумерный массив в Паскале трактуется как одномерный
массив, тип элементов которого также является массивом
(массив массивов). Положение элементов в двумерных
массивах Паскаля описывается двумя индексами. Их можно
представить в виде прямоугольной таблицы или матрицы.
Рассмотрим двумерный массив Паскаля размерностью 3*3, то
есть в ней будет три строки, а в каждой строке по три
элемента:
Каждый элемент имеет свой номер, как
у одномерных массивов, но сейчас
номер уже состоит из двух чисел –
номера строки, в которой находится
элемент, и номера столбца. Таким
образом, номер элемента определяется
пересечением строки и столбца.
Например, a 21 – это элемент, стоящий
во второй строке и в первом столбце.

43.

Описание двумерных массивов:
Const n=4;
m=5;
Var A :array [1..n, 1..m] of integer;
Строки
A [2,4]
A [4,2]
Столбцы
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]

44.

Для того, чтобы использовать массив в программе, его нужно
описать в разделе описаний:
Var имя_массива : array [размер ] of тип_элементов;
Имя массива выбираем по основным правилам имен
идентификаторов.
Размер:
[начальный_индекс . . конечный_индекс ]
[1..5 ]
[10..100 ]
[-10..10 ]
[нач_индекс . . конечн_индекс , нач_индекс . . конечн_индекс ]
Количество строк
Количество столбцов
Например,
Var
Name: array [1..30] of string;
Temperature : array [1..31] of real;
Kino : array [1..25, 1..40] of string;

45.

Обращение к конкретному элементу массива
осуществляется путем указания имени массива и индекса
этого элемента в [ ]
Name[15], Temperature[10], Kino[5,6]
Элементы массивов используются в выражениях
также, как и обычные переменные:
Name[15]:= ‘ Иванов ‘;
Sum:=Sum+Temperature[10];
Kino[5,6]:=‘Свободно ‘ ;
В качестве индексов массивов можно использовать
переменные целого типа:
Name[i], Temperature[k], Kino[i,j]
Это свойство дает возможность обрабатывать массивы в
циклах, в которых индекс массива является одновременно и
счетчиком цикла.

46. Рассмотрим двумерный массив А Объявите данный массив.

Определите значения следующих
элементов массива: A[1,5]= , A[5,1]= ,
A[6,4]= , A[4,5]= , A[2,3]= , A[4,2]= ,
A[3,2]= .
Определите месторасположение
элементов со следующими
значениями
A[ ..,..]= 17, A[…,…]= 29, A[ ..,..]= 30,
A[…,…]= 16, A[ ..,..]= 1, A[…,…]= 27.
1
3
5
7
9
2
4
6
8
10
11
13
15
17
19
12
14
16
18
20
21
23
25
27
29
22
24
26
28
30

47.

Двумерные массивы создаются путем ввода данных с
клавиатуры, с помощью случайных чисел и вычислений по
формулам.
Для формирования массива используется два вложенных
цикла. Первый цикл перебирает строки, а второй – столбцы.
For i:=1 to n do
for j:=1 to m do
For i:=1 to n do
readln (a[i , j]);
for j:=1 to m do
a[i , j]:=random(100); For i:=1 to n do
for j:=1 to m do
a[i , j]:=i*j;

48.

For i:=1 to n do
begin
for j:=1 to m do
write (a[i , j]);
writeln;
end;

49. Пример 1:Дана матрица действительных чисел размером 3x5. Вычислить сумму элементов матрицы.

PROGRAM EX_1;
CONST n=3; {Количество строк}
m=5; {Количество столбцов}
TYPE mas=array[1..n,1..m] of real;
VAR b: mas; {Массив}
i: integer; {Индекс строки}
j: integer; {Индекс столбца}
s: real; {Сумма}
BEGIN {Ввод значений матрицы ---------------------}
Writeln('Введите значения элементов матрицы:');
for i:=1 to n do
for j:=1 to m do read(b[i,j]);
{Вычисление суммы ----------------} s:=0;
for i:=1 to n do
for j:=1 to m do s:=s+b[i,j];
writeln('Сумма = ',s);
END.

50.

Пример 2. Создать программу
для формирования таблицы
умножения (таблицы
Пифагора).
Вывод массива:

51.

Операции с матрицами
Задача: Перестановка строк или столбцов. В матрице из N
строк и M столбцов переставить 2-ую и 4-ую строки.
j
2
1
2
5
2
1
4
7
3
1
3
7
for j:=1 to M do begin
c := A[2,j];
A[2,j] := A[4,j];
A[4,j] := c;
end;
A[2,j]
A[4,j]

52. Задания для самостоятельного выполнения.

1.
2.
3.
Сгенерировать матрицу целых чисел в диапазоне от -5
до 5 размером 5x3. Заменить все отрицательные
элементы матрицы на нули. Вывести содержимое
матрицы до обработки и после обработки.
Дана матрица целых чисел размером 4x4. Увеличить
все чётные элементы на 16, а нечётные элементы
увеличить втрое. Вывести на экран содержимое
обработанной матрицы.
Дана матрица целых чисел размером 3Х4. Поменять
местами 1 и 4 столбик. Вывести на экран содержимое
обработанной матрицы.

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

одномерный массив.
m – количество строк в двумерном
массиве и длина одномерного массива;
n – количество столбцов;
A[1..m,1..n] - двумерный массив;
B[1..m] – одномерный массив
max – вспомогательная переменная для
нахождения наибольшего элемента в
каждой строке.

54.

Program max_str;
Uses crt;
Const
m=5;
n=6;
var i,j:byte;
a: array [1..m, 1..n] of integer;
b: array [1..m] of integer;
max: integer;
begin
clrscr; randomize;
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=random(100);
write(a[i,j]:4);
end;
writeln;
end;
writeln ('Массив из максимальных
значений в строках:');
for i:=1 to m do
begin
max:=a[i,1];
for j:=2 to n do
begin
if a[i,j]>max then max:=a[i,j];
end;
b[i]:=max;
write (b[i]:4);
end;
readln;
end.

55.

Задание
Заполнить матрицу из 8 строк и 5 столбцов случайными
числами в интервале [-10,10] и вывести ее на экран.
Найти минимальный и максимальный элементы в матрице и
их номера. Формат вывода:
Минимальный элемент
A[3,4]=-6
Максимальный элемент A[2,2]=10
Вывести на экран строку, сумма элементов которой
максимальна. Формат вывода:
Строка 2:
3
5
8
9
8

56. Задания для самостоятельного выполнения.

1.
2.
3.
4.
Составить программу, которая вычисляет суммы
элементов столбцов двумерного массива и
записывает их в одномерный массив.
Составить программу, которая в двумерном массиве
случайных чисел элементы всех четных строк
делает нулевыми.
Составить программу, которая в каждом столбце
двумерного массива случайных чисел находит
наименьший элемент и записывает его индекс в
одномерный массив.
Составить программу, которая в двумерном массиве
находит самое большое значение и элементы
строки и столбца, на пересечении которых он стоит,
делает нулевыми.

57. Квадратная матрица

Квадратная матрицаэто двумерный массив,
в котором количество
строк равно
количеству столбцов.
Обращение к элементу
происходит также как
и в обычном
двумерном массиве
A[i,j].
1
31
45
10
4
18
12
10
9

58. Основные свойства квадратной матрицы

1. Квадратные матрицы имеют главную и побочную
диагонали.
Например, для матрицы А на главной диагонали
лежат элементы 1,4,9, на побочной - 45,4,12.
Если i = j - элементы расположены на главной
диагонали;
i > j - элементы расположены ниже главной диагонали;
i < j - элементы расположены выше главной диагонали;
i > j - элементы расположены на главной диагонали и
ниже;
i< j - элементы расположены на главной диагонали и
выше;
i+j = n+1 - элементы расположены на побочной
диагонали;

59. Основные свойства квадратной матрицы

2. Квадратная матрица, у
которой все элементы,
исключая элементы
главной диагонали,
равны нулю,
называется
диагональной
1 матрицей
0
0
3. Диагональная матрица,
у которой все
элементы, стоящие на
главной диагонали
равны 1, называется
единичной матрицей
1
0
0
0
2
0
0
1
0
0
0
3
0
0
1

60. Написать программу, позволяющую получить матрицу следующего вида:

5
2
2
2
4
2
5
2
4
2
2
2
4
2
2
2
4
2
5
2
4
2
2
2
5
for i:=l to n do
for j:=l to n do A[i,j]:= 2;
{блок заполнения элементов
главной диагонали массива}
for i:=l to n do A[i,i]:= 5;
{блок заполнения элементов
побочной диагонали массива}
for i:=l to n do A[i,n-i+1]:= 4;

61. Написать программу, позволяющую получить матрицу следующего вида:

5
2
2
2
2
0
5
2
2
2
0
0
5
2
2
0
0
0
5
2
0
0
0
0
5
При объявлении числовой матрицы,
все ее элементы заполняются нулями,
значит в нашем случае, для
заполнения матрицы нам достаточно
указать блоки заполнения ее главной
диагонали и блок заполнения
элементов над главной диагональю,
т.е.:
{блок заполнения элементов
главной диагонали массива}
Особенностью этой матрицыfor i:=l to n do A[i,i]:= 5;
является то, что ненулевыми{блок заполнения элементов
являются элементы главной над главной диагональю
диагонали и элементы,
массива}
расположенные над главной for i:=1 to n-1 do
диагональю.
for j:=i+l to n do A[i,j]:= 2;

62. Написать программу, позволяющую получить матрицу следующего вида:

5
0
0
0
0
3
5
0
0
0
3
3
5
0
0
3
3
3
5
0
3
3
3
3
5
{блок заполнения
элементов главной
диагонали массива}
for i:=l to n do A[i,i]:= 5;
{блок заполнения элементов под главной
диагональю массива}
for i:=2 to n do for j:=l to i-1 do A[i,j]:= 3;

63. Написать программу, позволяющую получить матрицу следующего вида:

1
1
1
1
7
1
1
1
7
0
1
1
7
0
0
1
7
0
0
0
7
0
0
0
0
{блок заполнения
элементов побочной
диагонали массива}
for i:=l to n do A[i,ni+1]:= 7;
{блок заполнения элементов над побочной
диагональю массива}
for i:=1 to n-1 do
for j:=l to n-i do A[i,j]:= 1;

64. Написать программу, позволяющую получить матрицу следующего вида:

0
0
0
0
7
0
0
0
7
1
0
0
7
1
1
0
7
1
1
1
7
1
1
1
1
{блок заполнения элементов
побочной диагонали
массива}
for i:=l to n do A[i,n-i+1]:= 7;
{блок заполнения элементов под побочной
диагональю массива}
for i:=n downto 2 to n do
for j:= n-i+2 to n do A[i,j]:= 1;

65. На основе изученных блоков сформировать и распечатать матрицы следующего вида:

Задание № 1
Задание № 2
6
11
11
11
11
9
9
9
9
15
-1
6
11
11
11
9
9
9
15
-2
-1
-1
6
11
11
9
9
15
-2
-2
-1
-1
-1
6
11
9
15
-2
-2
-2
-1
-1
-1
-1
6
15
-2
-2
-2
-2

66. Задания для самостоятельной работы

1. Дана целочисленная квадратная матрица
4х4, заполненная случайным образом.
Вычислить сумму элементов под
побочной диагональю. Распечатать сам
массив и значение суммы.
2. Дана матрица А вида: 1 3 3 3 3
Составить программу 10 4 3 3 3
10 10 9
3
3
формирующую
10 10 10 16 3
данную матрицу.
10
10
10
10
25
English     Русский Rules