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

Пример 3: подсчет количества элементов списка, больших заданного числа m (числа в списке целые)

var

i,k,m : integer;

. . .

m:=StrToFloat(Edit1.Text);

k:=0;

for i := 0 to ListBox1.Count-1 do begin

if StrToFloat(ListBox1.Items[i]) > m then begin

k := k + 1; end;

end;

Edit2.Text:= IntToStr(k); {вывод результата на экран}

А если нужно подсчитать не количество, а сумму таких элементов, тогда…

11

Пример 4: нахождение наибольшего элемента списка

var

i, nmax : integer; max : real;

. . .

max:=ListBox1.Items[i];

for i := 0 to ListBox1.Count-1 do begin

if StrToFloat(ListBox1.Items[i]) > max then begin

max := StrToFloat(ListBox1.Items[i]); n_max := i;

end;

end;

Edit1.Text:= FloatToStr (max); {наибольшее значение}

Edit2.Text:= IntToStr (n_max); {и его номер в списке}

12

Класс TComboBox

(вкладка Standard)

Компоненты этого класса представляют собой выпадающий список

Имеют свойства Items и Count как у класса TListBbox

Имеют все методы класса TListBox

Свойства, отсутствующие у класса TListBox:

 

Свойство

Тип

Пояснение

Text

String

Текст, видимый в окне нераскрытого списка

 

Integer

Номер видимой строки или -1, если введена

 

ItemIndex

 

 

 

 

отсутствующая в списке строка

13

Пример 1: пополнение списка элементом, введенным пользователем

ComboBox1.Items.Add(ComboBox1.Text));

Пример 2: пополнение списка элементом, введенным пользователем, если этот элемент отсутствует в списке

if ComboBox1. ItemIndex = -1 then ComboBox1.Items.Add(ComboBox1.Text));

Пример 3: подсчет количества элементов равных нулю в списке

k:=0;

for i := 0 to ComboBox1.Count-1 do begin

if ComboBox1.Items[i] = ‘0’ then k := k + 1;

end;

Edit2.Text:= IntToStr(k); {вывод результата на экран}

14

Двумерные и многомерные массивы

Множество практических задач требует хранения информации в виде прямоугольных таблиц.

Если вся таблица содержит однотипные данные, то такая таблица может быть представлена как двумерный массив.

15

Двумерные массивы

Oбъявление массива в разделе var

имя: array [нач_индекс1 .. кон_индекс1, нач_индекс2 .. конечный_индекс2] of тип

Пример объявления двумерного массива:

var

 

table

: array[0..99,1..12] of integer;

Пример обращения к отдельному элементу двумерного массива: table[0,5] := table[99,5];

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

Пример: фрагмент программы суммирования элементов массива

sum :=0;

for i := 0 to 99 do for j := 1 to 12 do

sum := sum + table[i,j];

16

Многомерные массивы

Нередко на практике требуются трехмерные массивы, а иногда даже четырех- и более мерные массивы.

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

table4 : array[1..200,1..2,1..5,1..6] of integer; {данные о числе пропущенных занятий для 200 студентов за 2 семестра 5 курсов 6 факультетов}

Пример: фрагмент программы суммирования элементов массива

sum :=0;

for i := 1 to 200 do for j := 1 to 2 do

for k := 1 to 5 do for n := 1 to 6 do

sum := sum + table4[i,j,k,n];

17

Компоненты Delphi для работы с двумерными массивами

Класс TStringGrid (вкладка Additional)

Объекты этого класса предназначены для работы с двумерным массивом (таблицей) строковых данных

Нумерация строк и столбцов таблицы начинается с нуля

18

Основные свойства компонентов класса TStringGrid

 

Свойство

Тип

Пояснение

Примечание

 

Cells

Array [0..n, 0..m] of

Двумерный массив строк,

Первый индекс –

 

 

String

пронумерованный с нуля

столбец, второй –

 

 

 

 

строка

 

FixedCols

Integer

Количество фиксированных

 

 

 

 

(серых) столбцов

Редко

 

FixedRows

Integer

Количество фиксированных строк

используются в

 

программах,

 

 

 

 

обычно задаются с

 

Options.

Boolean

Возможность редактирования

помощью

 

инспектора

 

goEditing

 

содержимого таблицы

 

 

объектов

 

 

 

пользователем

 

 

 

 

 

ColCount

Integer

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

 

 

RowCount

Integer

Количество строк

 

 

 

 

 

 

 

 

 

 

 

Пример 1: заполнение таблицы случайными числами в интервале от 0 до 20

for i:=0 to StringGrid1.ColCount-1 do

for j:=0 to StringGrid1.RowCount-1 do StringGrid1.Cells[i,j]:=IntToStr(random(21));

Пример 2: вычисление суммы третьего столбца таблицы

sum :=0;

for i := 0 to StringGrid1.RowCount-1 do sum := sum + StringGrid1.Cells[3,i];

Пример 3: вычисление наибольшего элемента седьмой строки таблицы

max:= StrToInt(StringGrid1.Cells[0,j]); for i:=1 to StringGrid1.ColCount-1 do

if StrToInt(StringGrid1.Cells[i,j])>max

then max:= StrToInt(StringGrid1.Cells[i,7]);

20