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

Задания

  1. Создать проект “Произведение элементов массива”, предусматривающий заполнение массива случайными числами и возможность вывода в текстовое поле произведение всех элементов в массиве.

  2. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,20]. Найти сумму элементов, имеющих нечетные индексы.

  3. Подсчитать количество элементов массива, значения которых больше заданного числа А и кратных 5.

  4. Найти номер первого отрицательного элемента, делящегося на 5 с остатком 2.

    1. Многомерные массивы. Пример создания проекта с границами типа «Лабиринт»

Массивы могут иметь и более одного измерения. В таких случаях говорят о многомерных массивах. Многомерные массивы широко используются в математике, статистике и некоторых других прикладных науках (например, для матричных вычислений). Объявление двумерного массива выглядит следующим образом:

Var TwoDimensionalArray: Array [1..80,1..25] of Integer;

Переменной TwoDimensionalArray соответствует некоторая матрица или двумерный массив, причем каждому элементу донного массива может быть поставлена в соответствие некоторая позиция на экране компьютера (на экране помещается 80 столбцов с номерами от 1 до 80 и 25 строк с номерами от 1 до 25). Таким образом, каждый элемент массива может быть использован для хранения одного символа, отображенного в соответствующей позиции экрана.

Двумерные массивы часто используются в проектах с ограничением пространства. Примером такого проекта с границами является приложение «Лабиринт».

Пример. Создать проект “Лабиринт”, в котором объект может перемещаться только по свободному пространству лабиринта.

Создадим графический интерфейс проекта, подобно тому, как изображено на рис. 42. Здесь на форме помещено пятьдесят семь компонентов TImage. Сами границы лабиринта (кирпичики) располагаются последовательно в объектах Image1-Image56. В компоненте Image57 находится изображение перемещаемого объекта.

Рис. 43 Графический интерфейс проекта

Каждому квадрату лабиринта (пустому или с кирпичиком) можно поставить в соответствие номер строки и столбца, в котором он находится, т.е. описать его с помощью двумерного массива.

Если объект может свободно перемещаться в квадрате, то значение массива равно 0, границам соответствует значение массива, равное единице. Например, для двух верхних границ строк обработчик события OnCreate у формы будет следующим:

var

Form1: TForm1;

M:array[0..9,0..9] of integer;

procedure TForm1.FormCreate(Sender: TObject);

Begin

m[0,0]:=1

m[0,1]:=1

m[0,2]:=1

m[0,3]:=1

m[0,4]:=1

m[0,5]:=1

m[0,6]:=1

m[0,7]:=1

m[0,8]:=1

m[0,9]:=1

m[1,0]:=1

m[1,1]:=0

m[1,2]:=0

m[1,3]:=0

m[1,4]:=1

m[1,5]:=0

m[1,6]:=0

m[1,7]:=0

m[1,8]:=0

m[1,9]:=1

end;

Для остальных строчек будет подобное описание.

Движение объекта управляется с помощью клавиатуры и проверки значения массива:

Procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

Begin

x:=round(image57.Left/45)

y:=round(image57.Top/45)

if (key=37)and (m[y,x-1]=0)then image57.Left:=image57.Left-45

if (key=39)and (m[y,x+1]=0)then image57.Left:=image57.Left+45

if (key=38)and (m[y-1,x]=0)then image57.top:=image57.top-45

if (key=40)and (m[y+1,x]=0)then image57.top:=image57.top+45

end;

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