Настройка компоненты StringGrid




Лабораторная работа №4. Обработка одномерных массивов

Цель работы: изучить составной тип данных – массив, основные свойства компоненты StringGrid. Написать и отладить программу с использованием одномерных массивов.

 

Общие теоретические сведения

Массив – конечная последовательность данных одного типа. Массив – объект сложного типа, каждый элемент которого определяется именем (ID) и целочисленным значением индекса (номера), по которому к элементу массива производится доступ. Рассмотрим одномерные массивы.

Внимание! Индексы массивов в языке С/С++ начинаются с 0.

В программе одномерный массив декларируется следующим образом:

тип ID массива [ размер ];

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

Примеры декларации массивов:

int a [5];

double b [4] = {1.5, 2.5, 3.75};

в целочисленном массиве а первый элемент а [0], второй – а [1], …, пятый – а [4]. Для массива b, состоящего из действительных чисел, выполнена инициализация, причем элементы массива получат следующие значения: b [0]=1.5, b [1]=2.5, b [2]=3.75, b [3]=0.

В языке С/С++ не проверяется выход индекса за пределы массива. Корректность использования индексов элементов массива должен контролировать программист.

Примеры описания массивов:

const Nmax=10; – задание максимального значения;

typedef double mas1[Nmax*2]; – описание типа одномерного массива;

mas1 a; – декларация массива а типа mas1;

int ss [10]; – массив из десяти целых чисел.

Элементы массивов могут использоваться в выражениях так же, как и обычные переменные, например:

f = 2* a [3] + a [ Ss [ i ] + 1]*3;

a [ n ] = 1 + sqrt(fabs(a [ n –1]));

 

Создание оконного приложения

Компонента StringGrid

При работе с массивами ввод и вывод значений обычно организуется с использованием компоненты StringGrid, предназначенной для отображения информации в виде двухмерной таблицы, каждая ячейка которой представляет собой окно однострочного редактора (аналогично окну Edit). Доступ к информации осуществляется с помощью элемента Cells [ ACol ][ ARow ] типа AnsiString, где целочисленные значения ACol, ARow указывают позицию элемента.

Внимание! Первый индекс ACol определяет номер столбца, а второй ARow – номер строки в отличие от индексов массива.

В инспекторе объектов значения ColCount и RowCount устанавливают начальные значения количества столбцов и строк в таблице, а FixedCols и FixedRows задают количество столбцов и строк фиксированной зоны. Фиксированная зона выделена другим цветом и обычно используется для надписей.

 

Пример выполнения задания

Удалить из массива А размером N, состоящего из целых чисел (положительных и отрицательных), все отрицательные числа. Новый массив не создавать. Для заполнения массива использовать фунцию random (kod) – генератор случайных равномерно распределенных целых чисел от 0 до (int) kod.

Пример создания оконного приложения

Значение N вводить из Edit, значения массива А – из компоненты StringGrid. Результат вывести в компоненту StringGrid.

Панель диалога и результаты выполнения программы приведена на рис. 5.1.

Рис. 5.1

Настройка компоненты StringGrid

На закладке Additional выберите пиктограмму , установите компоненты StringGrid 1 и StringGrid 2 и отрегулируйте их размеры. В инспекторе объектов для обоих компонент установите значения ColCount равными 2, RowCount равными 1, т.е. по два столбца и одной строке, а значения FixedCols и FixedRows равными 0. Значение ширины клетки столбца DefaultColWidth равным 40.

По умолчанию в компоненту StringGrid ввод данных разрешен только программно. Для разрешения ввода данных с клавиатуры необходимо в свойстве Options строку goEditing для компоненты StringGrid 1 установить в положение 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]);

}

 

Индивидуальные задания

Написать программу по обработке одномерных массивов. Размеры массивов вводить с клавиатуры.

При создании оконного приложения скалярный (простой) результат выводить в виде компоненты Label, а массивы вводить и выводить с помощью компонент StringGrid.

В одномерном массиве, состоящем из n вводимых с клавиатуры целых элементов, вычислить:

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

2. Сумму элементов массива, расположенных между первым и последним нулевыми элементами.

3. Сумму элементов массива, расположенных до последнего положительного элемента.

4. Сумму элементов массива, расположенных между первым и последним положительными элементами.

5. Произведение элементов массива, расположенных между первым и вторым нулевыми элементами.

6. Сумму элементов массива, расположенных между первым и вторым отрицательными элементами.

7. Сумму элементов массива, расположенных до минимального элемента.

8. Сумму модулей элементов массива, расположенных после последнего отрицательного элемента.

9. Сумму элементов массива, расположенных после последнего элемента, равного нулю.

10. Сумму модулей элементов массива, расположенных после минимального по модулю элемента.

11. Сумму элементов массива, расположенных после минимального элемента.

12. Сумму элементов массива, расположенных после первого положительного элемента.

13. Сумму модулей элементов массива, расположенных после первого отрицательного элемента.

14. Сумму модулей элементов массива, расположенных после первого элемента, рав­ного нулю.

15. Сумму положительных элементов массива, расположенных до максимального элемента.

16. Произведение элементов массива, расположенных между первым и последним отрицательными элементами.

 



Поделиться:




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

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


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