Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Новая методичка.rtf
Скачиваний:
9
Добавлен:
22.07.2019
Размер:
7.64 Mб
Скачать

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. Для завершения работы нажать кнопку “Выход”.

Пример 5.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);

Var I:size;

begin

m:=StrToInt(Edit1.text);

for i:=1 to m do a[i]:=StrToInt(Form1.Memo1.Lines[i])

end;

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

procedure TForm1.Button2Click(Sender: TObject);

Var n:integer;//количество строк в поле Memo1

max:integer; i,imax:size;

st:string;//строка для сообщения

begin n:=Form1.Memo1.Lines.Count;

//подсчет кол-ва строк в Memo1

if n=0 then ShowMessage('исходные данные не введены');

if n > m then begin // в поле Memo1 есть текст

ShowMessage('количество введенных строк'+

#13'превышает размер массива.');

n:=m;//будем вводить "m" строк end ;

{ В поле Memo строки пронумерованы с нуля }

{ Вывод введенного массива в окно сообщения }

if n > 0 then

begin st:='Введенный массив'+#13;

for i:=1 to n do

st:=st+IntToStr(i)+' '+IntToStr(a[i])+#13;

ShowMessage(st)

end;

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

for i:=1 to n do

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

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

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

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

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

  2. Вести в поле Edit1 значение n - количество элементов массива(n ).

  3. В поле Memo1, начиная со строки с номером 1, ввести элементы массива(по одному числу в строке).

  4. Нажать кнопку “Ввод”.

  5. Нажать кнопку “Поиск”. Появится окно с сообщением “Количество введенных строк превышает размер массива”(Первая строка ее номер нулевой , содержит текст “Вводите массив”). Нажать кнопку “ОК”. Появится окно с сообщением “Введенный массив” и после него сами элементы.

  1. Просмотреть их и нажать “ОК”.

  2. Проанализировать результаты.

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

Пример 5.3 Создание приложения с вводом двумерного массива в поле Edit и выводом его в таблицу StringGrid

Постановка задачи: в двумерном массиве A(m*n) определить максимальный элемент и его место расположение.

Компонент StringGrid страницы Additional предназначен для создания таблиц, в ячейках которых располагаются произвольные текстовые строки. Таблица делится на две части: фиксированную и рабочую. Фиксированная служит для показа заголовков столбцов/рядов и для ручного управления их размерами. Центральным свойством компонента является Cells - двумерный массив ячеек. Конкретная ячейка определяется парой чисел – номером столбца и номером ряда, на пересечении которых она находится(нумерация начинается с нуля). Например, Cells[2,3]. Здесь первый индекс 2 – это номер 3-го столбца, а второй индекс 3 – номер 4-го ряда (4-ой строки). Будьте внимательны при выводе в таблицу матрицы по строкам.

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

Размещенные компоненты:

Компоненты

Свойство

Значение

Пояснение

Label(1,10)

Button1

Button2

Edit1

Edit2

Edit3

StringGrid1

Caption

Caption

Caption

Text

Text

Text

ColCount

RowCount

FixedCols

FixedRow

s

Текст на форме

Расчет

Выход

Пусто

Пусто

Пусто

7

7

1

1

Количество строк матрицы

Количество столбцов

Матрица по строкам

Количество столбцов таблицы

Количество строк таблицы

Количество фиксированных столбцов и строк для надписей номеров

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

(Перед процедурой разместить функцию выделения

подстроки из строки GetSubSrt)

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