Створення та обробка лінійного масиву

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Лабораторна робота

На тему: «Створення та обробка лінійного масиву. Використання компонента StringGrid для представлення двовимірних масивів в середовищі Delphi »


Завдання 1. Створіть додаток, яке пропонує задати розмір лінійного масиву, заповнює цей масив випадковими цілими числами, виводить список елементів масиву, обчислює суму всіх елементів і кількість позитивних, визначає мінімальний і максимальний елементи масиву за вибором.
Рішення:
Створіть папку для збереження проекту «масив1». Збережіть проект - Massiv. На формі розмістіть компоненти Label1, 2 і Edit1, 2 і кнопку Button1. Для властивості Caption кнопки задайте значення «Створити масив». Розмістіть на формі панель GroupBox1 і задайте значення «Визначити», для властивості Caption.
У цій панелі розмістіть компоненти CheckBox1, 2,3,4, для властивості Caption яких задайте значення: «Мінімальний елемент», «Максимальний елемент», «Сума всіх елементів», «Число позитивних елементів», відповідно. Навпроти них розмістіть компоненти Edit3, 4,5,6. Якщо компоненти CheckBox не будуть відображатися, то слід виділити панель GroupBox1 і вибрати в контекстному меню команду Control → Send to Back (Порядок → На задній план).
У нижній частині форми розмістіть кнопку Button2 і задайте назву - «Обчислити». Видаліть текст Edit1, 2,3,4,5,6 з відповідних компонентів. Вирівняйте компоненти на формі, як показано на рис. 4.1. Зафіксуйте положення компонентів на формі за допомогою команди Edit> Lock Controls з головного меню.

SHAPE \ * MERGEFORMAT
Створення та обробка масиву
Число елементів
Створити масив
Вихідний масив
Мінімальний елемент
Максимальний елемент
Сума всіх елементів
Число позитивних елементів
Обчислити

Рис. 4.1 Приклад форми проекту «масив1»
Перш ніж створювати обробники подій клацання мишею по кнопках, в розділі опису змінних необхідно оголосити змінні цілого типу N, I, де N - розмір масиву, а I - порядковий номер елемента масиву, а також X - динамічний масив цілих чисел.
Var
Form1: TForm1;
N, I: integer;
X: array of integer;
{Опис динамічного масиву цілих чисел}
Примітка: динамічні масиви відрізняються від звичайних статистичних масивів тим, що для них не оголошується заздалегідь довжина - число елементів. При оголошенні динамічного масиву місце під нього не відводиться. Перш ніж використовувати масив, треба задати його розмір процедурою SetLength.
Для попередження введення у вікно Edit1 нечислове значення, використовуйте обробку події OnKeyPress для відповідного компонента. Виконайте це самостійно (див. лаб. Роб. № 3).
Для створення процедури обробки події, створення масиву цілих чисел, натисніть кнопку «Створити масив», потім на сторінці Події зробіть подвійне клацання на порожньому полі списку події OnClick. Після цього відредагуйте процедуру у вікні Редактора коду наступним чином:
Begin
Randomize;
N: = StrToInt (Edit1. Text); {число елементів масиву}
SetLength (X, N); {задати масиву Х довжину N}
Edit2. Text: = '»; {очистити вікно Edit2}
For I: = 0 to N-1 do
Begin
X [I]: = Round (Sin (Random (100)) * 100);
{Привласнити елементу масиву випадкове значення}
Edit2. Text: = Edit2. Text + '»+ IntToStr (X [I]);
{Вивести елементи масиву}
End;
End;
Обробку масиву опишіть у процедурі обробника події клацання мишею на кнопці «Обчислити». У вікні редактора коду в заготівлю процедури помістіть опис локальних змінних наступне:
Var
Max, Min, Sum, CountPlus: integer;
де Max - максимальний елемент масиву, Min - мінімальний елемент масиву, Sum - сума всіх елементів масиву, CountPlus - кількість позитивних елементів масиву. Текст процедури обробки масиву може бути записаний таким чином:
Begin
If CheckBox 1. Checked then Min: = X [0];
Edit3. Text: = '»;
If CheckBox2. Checked then Max: = X [0];
Edit4. Text: = '»;
Sum: = 0;
Edit5. Text: = '»;
CountPlus: = 0;
Edit6. Text: = '»;
For I: = 0 to N-1 do
Begin
If CheckBox1. Checked then
If Min> X [I] then Min: = X [I];
If CheckBox2. Checked then
If Max <X [I] then Max: = X [I];
If CheckBox3. Checked then
Sum: = Sum + X [I];
If CheckBox4. Checked then
If X [I]> 0 then CountPlus: = CountPlus + 1;
End;
{Висновок результатів обробки масиву}
If CheckBox1. Checked then Edit3. Text: = IntToStr (Min);
If CheckBox2. Checked then Edit4. Text: = IntToStr (Max);
If CheckBox3. Checked then Edit5. Text: = IntToStr (Sum);
If CheckBox4. Checked then Edit6. Text: = IntToStr (CountPlus);
End;
Збережіть файли проекту та програмного модуля, запустіть програму на виконання, задаючи різні значення числа елементів, переконайтеся у правильній роботі програми.

Завдання 2. Створіть додаток, яке виводить двовимірний масив випадкових цілих чисел і визначає мінімальний і максимальний елементи в цьому масиві.
Рішення:
1. Збережіть проект у папці «масив2» з ім'ям Massiv2 (файл модуля можна зберегти як Unit1).
2. Створіть форму «Обробка двовимірного масиву».
3. Виберіть у палітрі компонентів сторінки Additional компонент StringGrid і розмістіть його в лівому верхньому кутку (див. рис. 5.1). Задайте для властивостей ColCount (кількість стовпців) і RowCount (кількість рядків) значення 6. Задайте для властивостей FixedCols і FixedRows (кількість фіксованих, непрокручіваемих стовпців і рядків, які використовуються для розміщення написів номерів рядків і стовпців).
Примітка: даний компонент являє собою таблицю, що містить рядки. Таблиця може мати смуги прокрутки, причому задане число перших рядків і стовпців може бути фіксованим. Таким чином, можна задати заголовки стовпців і рядків, постійно присутні в компоненті.
4. Праворуч від об'єкта розмістіть кнопку Button1 і задайте для неї властивість Caption значення «Заповнити». Нижче розмістіть панель GroupBox1 і надайте значення «Визначити». На даній панелі розмістіть компоненти CheckBox 1,2 і призначте властивості Caption значення «Мінімальний елемент», «Максимальний елемент» відповідно. Потім справа розмістіть компоненти Edit 1,2 і кнопку з написом «Обчислити». Вирівняйте компоненти як показано на рис. 5.1.
5. Перш ніж створювати обробники подій кнопок «Заполнить» і «Обчислити», слід додати в розділ опису змінних даного модуля цілочисельні змінні, призначені для зберігання індексів масиву.
Var
Form1: TForm1;
I, J: integer;
6. Створіть процедуру обробки події клацання мишею на кнопці Button1, в якій спочатку буде виконана операція виведення номерів рядків і стовпців, а потім осередки StringGrid1 будуть заповнені випадковими цілими числами.
SHAPE \ * MERGEFORMAT
Обробка двовимірного масиву
Заповнити
Обчислити
Мінімальний елемент
Максимальний елемент
Визначити

Рис. 5.1 Приклад форми проекту «масив2»
Примітка: при вивченні мови TPascal ви використовували оператор with ... do для скорочення запису при зверненні до полів записів. Тепер можна застосовувати цей оператор для звернення до властивостей і методів об'єкта. Це робиться, щоб уникнути повторних посилань на об'єкт в наступних операторах. Наприклад, замість того щоб, звертаючись до осередку об'єкта StringGrid1 писати StringGrid1. Cells [I, J], зручніше використовувати оператор with StringGrid1 do, в тілі якого можна неодноразово звертатися до Cells [I, J], не згадуючи імені об'єкта StringGrid1.
Процедура обробки події кнопки Button1:
Procedure TForm1. Button1Click (Sender: TObject);
{Заповнення масиву}
begin
randomize;
with StringGrid1 do
begin
I: = 0;
For J: = 1 to RowCount - 1 do {вивести номери рядків}
Cells [I, J]: = IntToStr (J);
J: = 0;
For I: = 1 to ColCount - 1 do {вивести номери стовпців}
Cells [I, J]: = IntToStr (I);
End;
With StringGrid 1 do {Заповнення в таблиці двовимірного масиву}
For I: = 1 to ColCount - 1 do
For J: = 1 to RowCount - 1 do
Begin
Cells [I, J]: = IntToStr (Round (Sin (Random (100)) * 100));
End;
End;
7. Створіть процедуру обробки масиву для другої кнопки «Обчислити». Введіть текст процедури:
procedure TForm 1. Button 2 Click (Sender: TObject); {обробка масиву}
var
min, max: integer;
begin
if CheckBox1. Checked then
with StringGrid1 do
begin
min: = StrToInt (Cells [1,1]);
for I: = 1 to colCount - 1 do
for J: = 1 to RowCount - 1 do
if StrToInt (Cells [I, J]) <min then min: = StrToInt (Cells [I, J]);
Edit1. Text: = IntToStr (min);
End
Else Edit1. Text: =''; ...
(Визначення максимального записати самостійно аналогічно першій частині модуля).
End;

Додаток: Текст програми файлу модуля.
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids;
Type TForm1 = class (TForm)
StringGrid1: TStringGrid;
Button1: TButton; Button2: TButton;
GroupBox1: TGroupBox; CheckBox1: TCheckBox; CheckBox2: TCheckBox;
Edit1: TEdit; Edit2: TEdit;
procedure Button1Click (Sender: TObject);
procedure Button2Click (Sender: TObject);
private {Private declarations}
public {Public declarations}
end;
var Form1: TForm1; i, j: integer;
implementation {$ R *. dfm}
procedure TForm1. Button1Click (Sender: TObject);
begin Randomize;
with StringGrid1 do begin i: = 0;
for j: = 1 to RowCount-1 do Cells [i, j]: = IntToStr (j);
j: = 0;
for i: = 1 to ColCount-1 do Cells [i, j]: = IntToStr (i); end;
with StringGrid1 do
for i: = 1 to ColCount-1 do
for j: = 1 to RowCount-1 do
begin
Cells [i, j]: = IntToStr (Round (Sin (Random (100)) * 100));
end; end;
procedure TForm1. Button2Click (Sender: TObject);
var min, max: integer;
begin
if CheckBox1. Checked then
with StringGrid1 do begin
min: = StrToInt (Cells [1,1]);
for i: = 1 to ColCount-1 do
for j: = 1 to RowCount-1 do
if StrToInt (Cells [i, j]) <min then min: = StrToInt (Cells [i, j]);
Edit1. Text: = IntToStr (Min);
End else Edit1. Text :='';
if CheckBox2. Checked then
with StringGrid1 do begin
max: = StrToInt (Cells [1,1]);
for i: = 1 to ColCount-1 do
for j: = 1 to RowCount-1 do
if StrToInt (Cells [i, j])> max then max: = StrToInt (Cells [i, j]);
Edit2. Text: = IntToStr (Max);
End else Edit2. Text :='';
end; end.
Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Лабораторна робота
25.8кб. | скачати


Схожі роботи:
Курсова робота на тему Створення та обробка динамічних зображень
Створення та обробка зображень за допомогою графічного редактора растрової графіки Adobe Photoshop
Обробка сировини виробництво напівфабрикатів обробка овочів і грибів
Гідроабразивне обробка Обробка вибухом
Поняття і елементи масиву
Визначення геотермії гірського масиву
Аналіз методів сортування одновимірного масиву
Програма обробки масиву цілих чисел
Оцінка напружено-деформованого стану масиву порід
© Усі права захищені
написати до нас