Тема. Обработка табличных величин. Упражнения
Задание 4. В среде Lazarus разработайте проект, в котором столбец из четырех слов, которые пользователь вводит в многострочное поле, будет размещаться в строке таблицы.
1. Откройте среду Lazarus и создайте новый проект. Разместите на форме проекта многострочное поле, таблицу и кнопку пуск для запуска проекта.
2. Задайте свойства объектов формы.
3. Создайте процедуру обработки события пуск. В окне редактора кода опишите переменные:
- i - счетчик номеров строк в многострочном поле, счетчик цикла и номеров столбцов в таблице вывода;
- а - массив значений.
procedure TForm1.Button1Click (Sender: TObject);
var a: array [1..4] of string; i: integer;
begin
end;
4. Запишите программу для считывания данных из текстового поля, формирования надписей в таблице и заполнение ячеек таблицы.
procedure TForm1.Button1Click (Sender: TObject);
var a: array [1..4] of string; i: integer;
begin
StringGrid1.Cells [0,1]: = 'времена года'; //Ввод слова в ячейку (0,1) нулевого столбца первой строки таблицы
for i: = 1 to 4 do
begin
a [i] = memo1.lines [i-1]; //Ввод элементов массива, нумерация срок в memo1 начинается с нуля}
StringGrid1.Cells [i, 0] = inttostr (i); //Создание заголовка первой строки таблицы, ячейкa (0,0) должна быть свободной
StringGrid1.Cells [i, 1] = a [i]; // ввод элемента массива в ячейку таблицы
memo1.lines [i-1] = ''; // построчно удаление срок в поле memo1
end;
end;
5. Запустите проект на выполнение. Убедитесь, что условию задачи действия, связанные с объектами управления экранной формы. Если есть ошибки, исправьте их.
- Редактор StringGrid1 вызываем командой контекстного меню компонента.
6. Завершите работу с проектом и средой программирования, сохранив все изменения.
Итог:
Задание 5. В массиве а [1..10] переставить местами элементы, стоящие на четных и нечетных местах: а [1] на а [2], ..., а [9] на а [10].
Заполняем таблицу, используя редактор StringGrid1:
Решение:
Создайте новый проект. Добавьте на форму:
- кнопку "Выполнить перестановку";
- компонент StringGrid .
Настройте свойства StringGrid следующим образом:
В процедуре обработки события OnCreate для формы запрограммируйте вывода индексов элементов массива в зафиксированную строку заголовков столбцов.
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=1 to 10 do
stringgrid1.Cells[i-1,0]:=inttostr(i); //ввод индексов элементов массива с нулевой ячейки таблицы строки с номером -нулевая;
end;
В процедуре обработки события OnClick для кнопки "Выполнить перестановку" запрограммируйте:
а) заполнение массива значениями ячеек таблицы StringGrid1;
б) попарно перестановку элементов; в) вывод значений элементов массива в таблицу StringGrid1.
procedure TForm1.Button1Click(Sender: TObject);
var a:array[1..10] of integer; i,c:integer;// объявление переменных: i - для индексации очередного столбца ; с - для временного запоминания очередного a[i] элемента массива
begin
for i:=1 to 10 do //заполнение массива
if length (stringgrid1.Cells[i-1,1])<>0 then a[i] := strtoint(stringgrid1.Cells[i-1,1]) else a[i]:=0;
i:=1; //перестановка элементов массива
while i<=9 do begin c:= a[i]; a[i]:= a[i+1]; a[i+1]:=c; i:=i+2; end;
for i:=1 to 10 do stringgrid1.Cells[i-1,1]:=inttostr(a[i]); //вывод элементов массива
end;
Итог: