Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
informatica_lab3_2013.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
127.49 Кб
Скачать

Лабораторная работа №3

Тема: «Структурированные типы данных: массивы. Организация подпрограмм: процедуры и функции».

Цель работы:

  • изучить характеристики и основные операции с структурой данных – массив;

  • получить навыки ввода и вывода одномерных и двумерных массивов;

  • освоить принципы структурного программирования (организация подпрограмм: функций и процедур).

Пример 3.1. Нахождение значения и номера максимального элемента одномерного массива

Описание переменных:

Имя

Структура

Тип

Семантика

n

a

max

imax

простая

массив

простая

простая

целый

целый

целый

целый

количество элементов массива

заданный массив

максимальный элемент

номер максимального элемента

Для решения данной задачи используется функция GetSubStr(st:string;n:integer):string для выделения подстроки из строки. Данная функция размещается в разделе Implementation модуля формы Unit1. Т.к. вводимые элементы массива записываются в поле редактора Edit2, то функция Getsubstr будет выделять символы в строке Edit2 до пробела, т.е. цифры числа очередного элемента массива.

function GetSubStr(st:string;n:integer):string;

Var I,p:integer;

begin

for i:=1 to n-1 do begin

p:=pos(' ',st);

st:=copy(st,p+1,length(st)-p)

end;

p:=pos(' ',st);{найти конец нужной подстроки}

if p <> 0 then result:=copy(st,1,p-1) else result:=st

end;

Вид формы с компонентами:

Процедура обработки щелчка на кнопке "Расчет"

procedure TForm1.Button1Click(Sender: TObject);

const nn=20;// количество элементов массива

type size=1..nn;

Var a:array[size]of integer;

I,n,imax:size;

max:integer;

begin

n:=StrToInt(Edit1.text);

for i:=1 to n do a[i]:=StrToInt(GetSubStr(Edit2.text,i));

max:=a[1]; imax:=1;

for i:=1 to n do

if a[i] > max then begin max:=a[i];imax:=i end;

Label5.Caption:='max='+IntToStr(max);

Label6.Caption:='indexmax='+IntToStr(imax);

end;

Сценарий выполнения программы:

  1. Запустить программу (Run).

  2. Ввести в поле Edit1 значение количества элементов массива, не превышающее 21.

  3. В поле Edit2 ввести элементы массива, разделяя их пробелом.

  4. Нажать кнопку “Расчет”.

  5. Просмотреть результаты (ниже приведен пример).

  1. Для завершения работы нажать кнопку “Выход”.

Пример 3.2 Решение задачи примера 5.1 с использованием ввода элементов массива из строк компонента Memo

Вид формы:

Описание компонентов, размещенных на форме:

Компоненты

Свойство

Значение

Form1

Label1

Label2

Label3

Label4

Label5

Button1

Button2

Edit1

Memo1

Caption

Caption

Caption

Caption

Caption

Caption

Caption

Caption

Text

Lines

Поиск максимального элемента

Количество вводимых элементов

m=

max=

indexmax=

Ввод

Поиск

Выход

пусто

пусто

Используя страницу Standart палитры компонент, поместите в правой части формы компонент Memo (текстовый редактор), измените его параметры, выберите в окне Инспектора Объектов объект Memo1, затем на странице Свойства произведите двойной щелчок на поле значения Strings свойства Lines для формирования и редактирования текста. После этого в окне String List Editor удалите текст Memo1, введите текст в 0-й строке “Вводите массив” и щелкните мышью на кнопке ОК.

Ввод элементов массива и поиск в массиве максимального элемента и его индекса осуществляется в разных процедурах, поэтому описание массива и переменной “m” нужно выполнить в разделе Interface модуля Unit1:

const mm=20;//максимальный размер массива

type size=1..mm;

var

Form1: TForm1;

a:array[size]of integer;

m:size;

Процедура обработки щелчка на кнопке “Ввод”

procedure TForm1.Button1Click(Sender: TObject);

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