Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_Delphi_1.doc
Скачиваний:
15
Добавлен:
18.09.2019
Размер:
1.64 Mб
Скачать

7.Массивы

Подготовка к работе

1. По рекомендуемой литературе изучить:

  • способы описания размеров массивов;

  • способы ввода и вывода массивов;

  • реализацию приемов накопления суммы или произведения элементов массивов, запоминания результатов, нахождение наибольшего и наименьшего;

  • способы ввода и вывода матриц.

2. Разработать алгоритм решения в соответствии с заданием.

3. Составить программу решения задачи.

Контрольные вопросы

  1. Что такое массив?

  2. Описание типа - массив.

  3. Какие операторы языка можно использовать для описания массивов?

  4. Особенности организации цикла при обработке массивов?

  5. Особенности программирования при обработке массивов?

  6. Особенность ввода и вывода массивов?

  7. Представление строковых переменных типа String, как одномерных массивов.

  8. Вложенные массивы.

Задание к работе

  1. Обработка одномерного массива. Варианты заданий в табл. 7 .6. Проект – консольное приложение.

  2. Обработка матрицы. Варианты заданий в табл. 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

Выводы

  1. Массив – это набор компонент одинакового типа.

  2. Размерность массива ограничена только доступной памятью.

  3. Для обработки массивов применяются операторы циклов с известным числом повторений.

  4. При использовании операторов циклов можно применять процедуры:

  • continue для перехода к следующей итерации в цикле,

  • break для досрочного выхода из цикла.

  1. Переборный алгоритм позволяет найти элемент массива с заданным свойством (например, имеющий максимальное значение).

  2. Матрицы наглядно отображаются в табличной форме. Для вывода матриц в таком виде используются операторы:

  • write для размещения нескольких элементов в одной строке текста,

  • writeln для перехода к другой строке.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]