- •1.Интегрированная среда разработки Delphi
- •2.Структура программы и типы в языке Delphi
- •3.Линейные структуры
- •4.Структуры с ветвлениями
- •5.Циклы с неизвестным числом повторений
- •6.Циклы с заданным числом повторений
- •Задание к работе
- •7.Массивы
- •8.Файлы
- •9.Подпрограммы
- •10.Динамическая память Подготовка к работе
- •Контрольные вопросы
- •Задание к работе
- •Задание 1
- •Задание 2
- •11.Исключения
7.Массивы
Подготовка к работе
1. По рекомендуемой литературе изучить:
способы описания размеров массивов;
способы ввода и вывода массивов;
реализацию приемов накопления суммы или произведения элементов массивов, запоминания результатов, нахождение наибольшего и наименьшего;
способы ввода и вывода матриц.
2. Разработать алгоритм решения в соответствии с заданием.
3. Составить программу решения задачи.
Контрольные вопросы
Что такое массив?
Описание типа - массив.
Какие операторы языка можно использовать для описания массивов?
Особенности организации цикла при обработке массивов?
Особенности программирования при обработке массивов?
Особенность ввода и вывода массивов?
Представление строковых переменных типа String, как одномерных массивов.
Вложенные массивы.
Задание к работе
Обработка одномерного массива. Варианты заданий в табл. 7 .6. Проект – консольное приложение.
Обработка матрицы. Варианты заданий в табл. 7 .7. Проект – консольное приложение
табл. 7.6. Варианты задания 1
№ |
Имя массива |
Задание |
1 |
X(100) |
Вычислить сумму и количество элементов массива X, удовлетворяющих условию . |
2 |
А(80) |
Вычислить среднее арифметическое значение элементов массива A, удовлетворяющих условию . |
3 |
X(70) |
Переписать элементы, удовлетворяющих условию из массива X в массив Y и подсчитать их количество. |
4 |
В(50) |
Определить максимальный положительный элемент массива В и его порядковый номер. |
5 |
С(40) |
Вычислить минимальный отрицательный элемент массива С и его номер. |
6 |
D(80) |
Найти максимальный и минимальный элементы массива D и поменять их местами. |
7 |
Y(20) |
Найти сумму элементов массива. Разделить каждый элемент исходного массива на полученное значение. Результат получить в том же массиве. Полученный массив распечатать в одной строке. |
8 |
А(4) |
Найти сумму элементов массива. Разделить каждый элемент исходного массива на полученное значение. Результат получить в том же массиве. Напечатать в одной строке. |
9 |
N(50) |
Определить сумму элементов массива N, кратных трем. Условие кратности: INT(N(i)/3)*3=N(i). |
10 |
X(N) |
Вычислить сумму и количество элементов массива X. Условие . |
11 |
X(N) |
Переписать в массив Y подряд положительные элементы массива X. Условие . |
12 |
X(N) |
Переписать подряд в массив Y положительные и в массив Z отрицательные элементы массива X. Условие . |
13 |
В(K) |
Определить максимальный элемент массива B и его порядковый номер при . |
14
|
С(K) |
Определить минимальный элемент массива С и его порядковый номер при . |
15 |
А(K) |
Найти среднее значение элементов заданного массива. Преобразовать исходный массив, вычитая из каждого элемента среднее значение. Полученный массив распечатать в виде строки. K<=40. |
табл. 7.7. Варианты задания 2
№ |
Матрица |
Задание |
1 |
A |
Вычислить и запомнить сумму и число положительных элементов каждого столбца матрицы. Результаты отпечатать в виде двух строк |
2 |
B |
Вычислить и запомнить суммы и числа элементов каждой строки матрицы. Результаты отпечатать в виде двух столбцов. |
3 |
C |
Вычислить сумму элементов побочной диагонали матрицы. |
4 |
A |
Найти след матрицы. |
5 |
B |
Найти сумму элементов второй строки матрицы. |
6 |
C |
Найти сумму элементов второго столбца матрицы. |
7 |
A |
Вывести на печать элементы матрицы А(i,j)<=4 |
8 |
A |
Вывести на печать элементы матрицы 2<= А(i,j) <=5 |
9 |
B |
Вывести на печать отрицательные элементы матрицы. |
10 |
A |
Вывести на печать положительные элементы матрицы. |
11 |
A |
Вычислить сумму элементов матрицы. |
12 |
A |
Найти сумму элементов побочной диагонали матрицы. |
13 |
B |
Вычислить сумму элементов двух первых столбцов матрицы. |
14 |
C |
Вычислить среднее арифметическое матрицы. |
15 |
A |
Определить сумму элементов третьей строки матрицы. |
Используемые матрицы:
Пример выполнения
Задание 1
Вычислить наибольший элемент Xmax массива Х и его порядковый номер Nmax. Размерность массива . Результат – консольное приложение.
Блок-схема алгоритма представлена на рис. 7 .14.
рис. 7.14. Блок-схема алгоритма задания 1
В блоке 1 вводятся число элементов массива n и значения элементов массива x[i]. В блоке 2 в качестве кандидатов в ответы выбирается первый элемент (Xmax = первый элемент массива, Imax = 1). Блок 3 открывает цикл с известным числом повторений. В блоке 4 текущий элемент массива x[i] сравнивается с Xmax. Если он больше Xmax, то в блоке 5 Xmax и Imax меняются на параметры текущего элемента. Результат выводится блоком 6. Блок 7 обеспечивает паузу в исполнении программы, чтобы пользователь мог увидеть результат.
Листинг программы
program Prg_7_1;
{$APPTYPE CONSOLE}
uses
SysUtils,RusTrans;
const
NN=30;
var
i,n,Xmax,Imax: integer;
x:array[1..NN] of integer;
begin
writeln (Rus('Введите размер массива n'));
readln(n);
writeln;
randomize;
for i:=1 to n do x[i]:=random(100); // Ввод массива x
Xmax:=x[1]; // Кандидат в Xmax
Imax:=1; // Его номер
for i:=2 to n do if x[i]>Xmax then // Поиск Xmax
begin
Xmax:=x[i];
Imax:=i
end;
writeln;
writeln(Rus('Результат'));
writeln(Rus('Максимум Xmax='),Xmax);
writeln(Rus('Его номер Imax='),Imax);
readln;
end.
Задание 2
Вывести квадратную матрицу X размером N в виде таблицы. Вычислить и вывести сумму первых положительных элементов нечетных столбцов матрицы и обнулить элементы, размещенные над суммируемыми элементами.
Листинг программы:
program Prg_7_2;
{$APPTYPE CONSOLE}
uses
SysUtils,RusTrans;
const NN=30;
var
i,j,k,l,n,s: integer;
x:array[1..NN,1..NN] of integer;
begin
writeln (Rus('Введите размер матрицы n'));
readln(n);
writeln;
randomize;
for i:=1 to n do // Формирование матрицы
for j:=1 to n do x[i,j]:=50-random(100);
for i:=1 to n do // Вывод матрицы
begin
for j:=1 to n do write(x[i,j]:4);
writeln;
end;
s:=0; // Инициализация суммы
for j:=1 to n do
begin
if j mod 2=0 then continue; // Пропустить четные столбцы
for i:=1 to n do
begin
if x[i,j]>0 then
begin
s:=s+x[i,j]; // Суммирование
break; // Досрочный выход из цикла
end;
x[i,j]:=0; // Обнуление элемента матрицы
end;
end;
writeln;
writeln(Rus('Сумма='),s);
for k:=1 to n do
begin // Вывод измененной матрицы
for l:=1 to n do write(x[k,l]:4);
writeln;
end;
readln;
end.
На рис. 7 .15 приведено окно работающего приложения задания 2. По нему нужно проверить правильность исполнения алгоритма.
рис. 7.15. Окно работающего приложения задания 2
Выводы
Массив – это набор компонент одинакового типа.
Размерность массива ограничена только доступной памятью.
Для обработки массивов применяются операторы циклов с известным числом повторений.
При использовании операторов циклов можно применять процедуры:
continue для перехода к следующей итерации в цикле,
break для досрочного выхода из цикла.
Переборный алгоритм позволяет найти элемент массива с заданным свойством (например, имеющий максимальное значение).
Матрицы наглядно отображаются в табличной форме. Для вывода матриц в таком виде используются операторы:
write для размещения нескольких элементов в одной строке текста,
writeln для перехода к другой строке.