- •Лабораторна робота №5
- •5.1 Теоретична частина
- •5.2. Створення віконного застосування Компонент StringGrid
- •5.3. Приклад виконання завдання
- •5.3.1. Приклад створення віконного застосування
- •Налаштування компоненту StringGrid
- •5.3.2. Приклад створення консольного застосування
- •5.4. Індивідуальні завдання
Налаштування компоненту StringGrid
На закладці Additional виберіть відповідну піктограму, встановите компоненти StringGrid1 і StringGrid2 і відрегулюйте їх розміри. У інспекторові об'єктів для обох компонент встановите значення ColCount рівними 2, RowCount рівними 1, тобто по два стовпці і одному рядку, а значення FixedCols і FixedRows рівними 0. Значення ширини клітини стовпця DefaultColWidth рівним 40.
За умовчанням в компоненту StringGrid введення даних дозволене тільки програмно. Для дозволу введення даних з клавіатури необхідно у властивості Options рядок goEditing для компоненти StringGrid1 встановити в положення true.
Текст функцій-обробників може мати наступний вигляд:
. . .
int n = 4;
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
randomize(); // Зміна початкової адреси для random()
Edit1 ->Text=IntToStr(n);
StringGrid1 ->ColCount=n;
for(int i=0; i<n;i++) // Заповнення масиву А випадковими числами
StringGrid1 ->Cells[i][0] = IntToStr(random(21) - 10);
Label3 ->Hide(); // Приховати компоненту
StringGrid2 ->Hide();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
n=StrToInt(Edit1 ->Text);
if(n>10){
ShowMessage("Максимальна кількість 10"!);
n=10;
Edit1 ->Text = "10";
}
StringGrid1 ->ColCount=n;
for(int i=0; i<n;i++)
StringGrid1 ->Cells[i][0]=IntToStr(random(21) - 10);
Label3 ->Hide();
StringGrid2 ->Hide();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int i, kol = 0, a[10]; // Декларація одновимірного масиву
//Заповнення масиву А елементами з таблиці StringGrid1
for(i=0; i<n;i++)
a[i]=StrToInt(StringGrid1 ->Cells[i][0]);
//Видалення негативних елементів з масиву А
for(i=0; i<n;i++)
if(a[i]>=0) a[kol++] = a[i];
StringGrid2 ->ColCount = kol;
StringGrid2 ->Show(); // Показати компоненту
Label3 ->Show();
//Виведення результату в таблицю StringGrid2
for(i=0; i<kol;i++) StringGrid2 ->Cells[i][0]=IntToStr(a[i]);
}
5.3.2. Приклад створення консольного застосування
Текст програми може мати наступний вигляд (зверніть увагу на те, що функція main використовується в простій формі - без параметрів і не повертає результатів) :
. . .
#include <stdio.h>
#include <conio.h>
void main()
{
int a[10],n, i, kol=0;
randomize(); // Зміна початкової адреси для random()
printf("Input N (<=10) ");
scanf("%d", &n);
puts("\n Massiv A");
for(i=0; i<n;i++){
a[i] = random(21) - 10; // Заповнення масиву А випадковими числами
printf("%4d", a[i]);
}
//Видалення негативних елементів з масиву А
for(i=0; i<n;i++)
if(a[i]>=0) a[kol++] = a[i];
puts("\n Rezult massiv A");
for(i=0; i<kol;i++) printf("%4d", a[i]);
puts("\n Press any key ... ");
getch();
}
Із заповненим випадковими числами масивом А результат програми може бути наступним: