Обработка одномерных числовых массивов — КиберПедия 

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Обработка одномерных числовых массивов

2020-12-06 89
Обработка одномерных числовых массивов 0.00 из 5.00 0 оценок
Заказать работу

 

Краткие сведения о работе с массивом чисел

Числовым массивом (массивом чисел) называется совокупность числовых переменных одного типа (элементов массива), каждой из которых поставлено в соответствие целое число, определяющее порядковый номер этой переменной в массиве. Указанный порядковый номер называется индексом элемента массива.

СП Delphi в соответствии с описанием массива отводит для хранения значений его элементов последовательность ячеек памяти. Размер ячейки в байтах зависит от объявленного типа массива.

Ниже приведен пример описания числовых массивов:

var

a: array[1..20]of real; {массив из 20 вещественных чисел с нумерацией от 1 до 20}

b: array[0..5]of integer; {массив из 6 целых чисел, пронумерованных от 0 до 5}

x,y: array[1..3]of real; {два массива, каждый из которых содержит по три вещественных числа с индексами от 1 до 3}

Операции с числовыми массивами производятся поэлементно. Например, оператор присваивания x[1]:=-4,2; изменяет значение первого элемента массива. Для обнуления всех элементов массива можно написать следующий цикл:

for i:=1 to 20 do

a[i]:=0;

Организацию ввода и вывода элементов массива рассмотрим на примере следующей задачи, приведенной ниже.

Задача. Дан массив целых чисел. Предполагается, что в массиве не более 20 чисел. Требуется увеличить каждый его элемент в два раза.

Интерфейс задачи представлен на рис. 28. Для свойств объекта StringGrid1 и StringGrid2 надо установить следующие значения:

· число фиксированных строк (FixedRows) – 0;

· число фиксированных столбцов (FixedCols) – 0;

· число столбцов в таблице (ColCount) – 1;

· число строк в таблице (RowCount) – 20.

Для объекта StringGrid1 свойства goEditing и goTabs надо установить значение true. Для объекта StringGrid2 эти свойства должны иметь значение false.

 

 


Рис. 28. Интерфейс проекта ввода-вывода массива

 

На рис. 29 представлены эквивалентные изображения цикла ввода элементов массива.

 

 

             
 
б

 


Рис. 29. Варианты изображения алгоритма ввода элементов массива:
а – на основе блока Подготовка; б – краткая форма;
в – на основе блока Решение

 

Схема алгоритма решения задачи приведена на рис. 30.

Для решения искомой задачи достаточно составить процедуру, обрабатывающую щелчок по кнопке Button1. Текст этой процедуры приведен на рис. 31.

Для отладки достаточно одного теста при условии, что в массиве больше одного элемента. Пример выполнения проекта приведен на рис. 32.


 

 

 


Рис. 30. Схема алгоритма удвоения элементов массива

 

 


Рис. 31. Текст процедуры удвоения значений элементов массива

 

 

 


Рис. 32. Пример выполнения проекта удвоения значений элементов массива

Пример создания проекта по обработке числового массива

 

Технологию обработки числового массива рассмотрим на примере задачи, приведенной ниже.

 

Задача. В заданном целочисленном массиве вычислить сумму элементов, не меньших заданного числа и стоящих на четных местах. Кроме того, надо определить значение и местоположение последнего максимального элемента массива.

 

Интерфейс задачи определяется окном формы, вид которого представлен на рис. 33.

 

 

 


Рис. 33. Окно формы задачи

 

Исходный массив задается с помощью объекта StringGrid1, в свойствах которого указана одна строка, 10 столбцов и отсутствие фиксированных строк и столбцов.

Схема алгоритма решения задачи приведена на рис. 34.

Текст процедуры обработки щелчка по кнопке Обработка приведен на рис. 35.

Для отладки проекта можно сконструировать следующий тест: на четных местах в массиве расположить элементы большие, меньшие и равные заданному числу, при этом в массив поместить несколько максимальных чисел.

Пример результата выполнения проекта для указанного теста приведен на рис. 36.


 

 


Рис. 34. Схема алгоритма решения задачи

 

 


Рис. 35. Текст процедуры обработки щелчка по кнопке Обработка

 

 

 


Рис. 36. Пример выполнения заданного проекта

ФЛАЖКИ И ПЕРЕКЛЮЧАТЕЛИ

 

7.1. Основные свойства объектов Флажок, Переключатель
и Группа переключателей

Все три рассматриваемых здесь объекта находятся на странице Standart палитры компонентов.

Компонент Флажок (CheckBox) используется для указания, установлен или не установлен данный параметр. После размещения визуального компонента Флажок в окне формы возникнет контейнер (в виде квадрата) для отметок с заголовком, как показано на рис. 37.

 

 


Рис. 37. Вид компонента Флажок после размещения в окне формы

В окне формы может быть установлено несколько компонентов CheckBox, причем состояние любого из них никак не зависит от состояния остальных. Установка параметра отмечается флажком, который имеет вид птички, в контейнере для отметок (квадрат).

Основные свойства объекта CheckBox (флажок) следующие:

· Caption – заголовок.

· Alignment – возможные значения taLeftJustify или taRightJustify – расположение заголовка соответственно слева или справа относительно контейнера для отметок.

· Checked – возможные значения true или false, т. е. флажок соответственно включен или выключен.

Компонент Перелючатель (RadioButton) предназначен для выбора одного из нескольких взаимоисключающих параметров. После размещения визуального компонента Перелючатель в окне формы возникнет объект (радиокнопка с заголовком), вид которого представлен на рис. 38.

 

 

 


Рис. 38. Вид компонента Переключатель после размещения в окне формы

 

В окне формы должно быть размещено не менее двух переключателей. Выбранный параметр отмечается точкой в кружке.

Основные свойства объекта RadioButton (переключатель) такие же, как и у флажка:

· Caption – заголовок.

· Alignment – возможные значения taLeftJustify или taRightJustify – расположение заголовка соответственно слева или справа относительно радиокнопки.

· Checked – возможные значения true или false, т. е. кнопка включена или выключена соответственно.

При установке значения true для свойства Checked одного из переключателей у всех остальных переключателей этой группы свойство Checked автоматически принимает значение false.

Назначение объекта Группа переключателей (RadioGroup) заключается в следующем:

· разделении всех переключателей, находящихся в окне форме, на независимо работающие группы;

· упрощении обработки переключательного списка за счет обеспечения доступа по индексу переключателя.

После размещения компонента в окне формы возникнет объект, приведенный на рис. 39, на котором размещаются переключатели. Размещение переключателей в области группы выполняется с помощью свойства Items.

 

Рис. 39. Создание компонента Группа переключателей: а – первоначальный
вид компонента; б – окно задания имен переключателей;
в – окончательный вид компонента

 

Items содержит список строк с заголовками переключателей, включенных в группу. Для включения переключателя в группу надо щелкнуть кнопкой мыши справа от названия свойства Items и в открывшемся окне String List editor (см. рис. 39) набрать текст заголовка включаемого переключателя. После окончания набора в области RadioGroup появятся переключатели с соответствующими заголовками (рис. 39).

Примечания:

1. Для исключения переключателя из группы надо удалить заголовок переключателя из списка Items.

2. Компоненты RadioButton, которые помещены в область созданной RadioGroup не через список Items, а с помощью обычной технологии (щелчок мыши), не будут относиться к данной группе переключателей, а войдут в независимую группу переключателей наряду с переключателями, располагающимися в окне формы вне области RadioGroup.

 

Кроме свойства Items, к основным свойствам объекта RadioGroup относятся следующие свойства:

· Caption – заголовок.

· ItemIndex – индекс установленного переключателя, нумерация которого начинается с 0. После образования группы данный индекс принимает значение –1 (минус единица). При замене этого значения на 0 первый переключатель перейдет в состояние установлен. Если оставить свойству ItemIndex исходное значение (–1), то после запуска проекта все переключатели группы будут в состоянии не установлен. Именно этот случай представлен на рис. 39.

· Columns – число столбцов, в которых представлены переключатели в области RadioGroup. Если значение этого свойства равно единице, то объект RadioGroup примет вид, изображенный на рис.39.

 

7.2. Пример использования объектов Флажок
и Группа переключателей

 

Задача. Определить размер платы за гостиницу при условии, что за одноместный номер взимается 100% от базовой величины, двухместный – 75, трехместный – 50%. При этом для участников войны делается скидка в размере 15%, а в случае предоплаты – дополнительная скидка 10%.

Для создания интерфейса проекта поместим в окно формы следующие визуальные компоненты для ввода исходных данных:

· компоненты Label1 и Edit1 для ввода базовой величины;

· компонент RadioGroup1 для задания типа номера;

· объекты CheckBox1 и CheckBox2 для отметки полагающихся клиенту льгот.

В окно формы поместим также командную кнопку Button1 и поле Edit2 с надписью Label2 для вывода результата.

 

Установим следующие значения свойства Caption:

· для объекта Label1 и Label2 – значения Базовая величина и Плата за проживание соответственно;

· для объектов CheckBox1 и CheckBox2Ветеран и Предоплата соответственно;

· для объекта RadioGroup1Тип номера;

· для объекта Button1Расчет.

Интерфейс проекта приведен на рис. 40.

 

 

 


Рис. 40. Интерфейс проекта, использующего флажки
и группу переключателей

В данном случае переключатели появились в области RadioGroup1 после набора их заголовков в списке свойства Items. В результате стало возможным использовать значение свойства ItemIndex. Установим значение этого свойства, равное нулю. В результате будет включен первый переключатель, а остальные два будут выключены. Свойству Columns присвоим значение 1.

Свойству Checked объектов CheckBox1 и CheckBox2 надо присвоить значение false, в результате оба флажка будут не установлены.

Свойству ReadOnly объекта Edit2 надо присвоить значение true, чтобы нельзя было изменить поле результата с клавиатуры.

Схема алгоритма решения задачи приведена на рис. 41.

 

 

 


Рис. 41. Схема алгоритма расчета платы за проживание

Текст процедуры для обработки щелчка по кнопке Расчет приведен на рис. 42.

Отладка проекта должна быть проведена для следующих тестов:

· количество комнат – одна, скидки для ветеранов нет, предоплаты не было;

· количество комнат – две, действует скидка для ветеранов, предоплаты не было;

· количество комнат – три, скидки для ветеранов нет, была сделана предоплата;

· количество комнат любое, действует скидка для ветеранов, была сделана предоплата.

 

 

 

 


Рис. 42. Текст процедуры обработки щелчка по кнопке Расчет
проекта по расчету платы за проживание

 

 


Поделиться с друзьями:

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.05 с.