Листинг 5.2. Ввод и обработка массива целых чисел




Объявление массива

Имя: array [нижний_индекс..верхний_индекс] of тип

где:

  • имя — имя массива;
  • array — зарезервированное слово языка Delphi, обозначающее, что объявляемое имя является именем массива;
  • нижний_индекс и верхний _ индекс — целые константы, определяющие диапазон изменения индекса элементов массива и, неявно, количество элементов (размер) массива;
  • тип — тип элементов массива.

Примеры объявления массивов:

temper: array [1..31] of real;

коef :array [0..2] of integer;

name: array [1..30] of string [25];

Const

NT = 18; // число команд

SN = 25; // предельная длина названия команды

Var

team: array[1..NT] of string[SN];

team [1]:= 'Зенит';

d:= koef[1]*koef[1]-4*koef[2]*koef[1];

ShowMessage(name[n+1]);

temper[i]:= StrToFloat(Edit1.text);

 

Имя: array [нижний_индекс..верхний_индекс] of тип = (список);

где список — разделенные запятыми значения элементов массива. Например:

a: array[10] of integer = (0,0,0,0,0,0,0,0,0,0);

Team: array[1..5] of String[10]=

('Зенит','Динамо','Спартак','Ротор','СКА');

for i:= 1 to 10 do

a[i]:= 0;

Операции с массивами

Типичными операциями при работе с массивами являются:

  • вывод массива;
  • ввод массива;
  • поиск максимального или минимального элемента массива;
  • поиск заданного элемента массива;
  • сортировка массива.

Вывод массива

Рис. 5.1. Форма и диалоговое окно приложения Вывод массива

Листинг 5.1. Инициализация и вывод массива

unit outar_;

Interface

Uses

Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms,Dialogs, StdCtrls;

Type

Tform1 = class(TForm)

Button1: TButton;

Label1: TLabel;

procedure Button1Click(Sender: TObject);

private { Private declarations }

public { Public declarations }

end;

Var

Form1: TForm1;

Implementation

{$R *.dfm}

Const

NT = 5;

Var

team: array[1..NT] of string[10] =

('Зенит','Динамо','Ротор','Спартак','СКА');

procedure Tform1.Button1Click(Sender: TObject);

Var

st :string; // список команд

i: integer; // индекс, номер элемента массива

Begin

// формирование списка для отображения в форме

for i:=1 to NT do st:= st + IntToStr(i)+ ' '+ team[i] + #13;

// вывод списка

Label1.Caption:= st;

end;

End.

Ввод массива

Использование компонента StringGrid

Для ввода массива удобно использовать компонент StringGrid. Значок компонента StringGrid находится на вкладке Additional (рис. 5.2).

Рис. 5.2. Компонент StringGrid

Компонент StringGrid представляет собой таблицу, ячейки которой содержат строки символов. В табл. 5.1 перечислены некоторые свойства компонента StringGrid.

Таблица 5.1. Свойства компонента StringGrid

       
  Свойство Определяет  
  Name Имя компонента. Используется в программе для доступа к свойствам компонента  
       

 

       
  ColCount Количество колонок таблицы  
  RowCount Количество строк таблицы  
  Cells Соответствующий таблице двумерный массив. Ячейка таблицы, находящаяся на пересечении столбца номер col и строки номер row определяется элементом cells [col, row]  
  FixedCols Количество зафиксированных слева колонок таблицы. Зафиксированные колонки выделяются цветом и при горизонтальной прокрутке таблицы остаются на месте  
  FixedRows Количество зафиксированных сверху строк таблицы. Зафиксированные строки выделяются цветом и при вертикальной прокрутке таблицы остаются на месте  
  Options.goEditing Признак допустимости редактирования содержимого ячеек таблицы. True — редактирование разрешено, False — запрещено  
  Options.goTab Разрешает (True) или запрещает (False) использование клавиши <ТаЬ> для перемещения курсора в следующую ячейку таблицы  
  Options.GoAlways-ShowEditor Признак нахождения компонента в режиме редактирования. Если значение свойства False, то для того, чтобы в ячейке появился курсор, надо начать набирать текст, нажать клавишу <F2> или сделать щелчок мышью  
  DefaultColWidth Ширину колонок таблицы  
  DefaultRowHeight Высоту строк таблицы  
  GridLineWidth Ширину линий, ограничивающих ячейки таблицы  
  Left Расстояние от левой границы поля таблицы до левой границы формы  
  Top Расстояние от верхней границы поля таблицы до верхней границы формы  
  Height Высоту поля таблицы  
  Width Ширину поля таблицы  
  Font Шрифт, используемый для отображения содержимого ячеек таблицы  
  ParentFont Признак наследования характеристик шрифта формы  
       

Рис. 5.3. Диалоговое окно программы Ввод и обработка массива

Таблица 5.2. Значения свойств компонента StringGrid1

       
  Свойство Значение  
  ColCount    
  FixedCols    
  RowCount    
  DefaultRowHeight    
  Height    
  DefaultColWidth    
  Width    
  Options.goEditing True  
  Options.AlwaysShowEditing True  
  Options.goTabs True  
       

 

Листинг 5.2. Ввод и обработка массива целых чисел

unit getar_;

Interface

uses Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms, Dialogs, Grids, StdCtrls;

Type

TForm1 = class(TForm)

Label1: TLabel;

StringGrid1: TStringGrid;

Button1: TButton;

Label2: TLabel;

procedure Button1Click(Sender: TObject);

private { Private declarations }

public { Public declarations }

end;

Var

Form1: TForml;

Implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

Var

a: array [1..5] of integer; // массив

summ: integer; // сумма элементов

sr: real; // среднее арифметическое

i: integer; // индекс

Begin

// ввод массива

// считаем, что если ячейка пустая, то соответствующий

// ей элемент массива равен нулю

for i:= 1 to 5 do

if Length(StringGrid1.Cells[i-1, 0]) <>0

then a[i]:= StrToInt(StringGridl.Cells[i-1,0])

else a[i]:= 0;

// обработка массива

summ:= 0;

for i:=1 to 5 do summ:= summ + a[i];

sr:= summ / 5;

// вывод результата

Label2.Caption:='Сумма элементов: ' + IntToStr(summ)

+ #13+ 'Среднее арифметическое: ' + FloatToStr(sr);

end;

End.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: