Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Примеры. Пример 2.1 Используя компоненту Label выведем названия месяцев в отсортированном виде ( рис






Пример 2.1 Используя компоненту Label выведем названия месяцев в отсортированном виде (рис. 17 - результат вывода элементов массива).

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

Решение задачи: 1. учитывая, что в году 12 месяцев, объявим количество месяцев как константу, т.е.

const n=12;

2. Названия месяцев – это одномерный массив из строк, поэтому его можно объявить как:

const AnsiString month[]={" январь", " февраль", " март", " апрель", " май", " июнь", " июль", " август", " сентябрь", " октябрь", " ноябрь", " декабрь" };

3. Функция на щелчок компоненты Button1:

void __fastcall TForm1:: Button1Click(Sender: TObject);

{ const n=12;

AnsiString s; // Название месяцев

int i; //индекс, номера элементов массива

for (i=0; i< n; i++) //цикл с параметром

s=s+IntToStr(i+1) + " " + month[i]+" \n";

Label1-> Caption=s; // вывод списка

}

Пример 2.2 используя компонент StringGrid для ввода данных, вычислить сумму и среднее арифметическое элментов одномерного.

Решение задачи: 1. Для ввода массива удобно использовать компонент StringGrid. Значок компонента StringGrid находится на вкладке Additional.

 

Компонент StringGrid представляет собой таблицу, ячейки которой содержат строки символов. Таблица делится на две области: фиксированную и рабочую. Первая область используется для описания заголовков стоблцов и строк таблицы и управления вручную их шириной. Во многих случаях эта область занимает левую колонку и верхнюю строку. Но с помощью свойств FixedCols и FixedRows можно изменить количество фиксированных колонок и строк. Если их значения равны 0, то фиксированных областей не будет (рис.19).

В таблице11 перечислены некоторые свойства компоненты StringGrid.

Свойства компонента StringGrid Таблица 11

Свойство Определяет
Name Имя компонента. Используется в программе для доступа к свойствам компонента
ColCount Количество колонок таблицы
RowCount Количество строк таблицы
Cells Соответствующий таблице двумерный массив. Ячейка таблицы, находящаяся на пересечении столбца номер col и строки номер row определяется элементом cells [col, row]. Однако нужно учитывать, что колонки таблицы и строки, нумеруются с нуля.
FixedCols Количество зафиксированных слева колонок таблицы. Зафиксированные колонки выделяются цветом и при горизонтальной прокрутке таблицы остаются на месте
FixedRows Количество зафиксированных сверху строк таблицы. Зафиксированные строки выделяются цветом и при вертикальной прокрутке таблицы остаются на месте
Options-> goEditing Признак допустимости редактирования содержимого ячеек таблицы. True — редактирование разрешено, False — запрещено
Options-> goTab Разрешает (True) или запрещает (False) использование клавиши < ТаЬ> для перемещения курсора в следующую ячейку таблицы
Options-> GoAlways-ShowEditor Признак нахождения компонента в режиме редактирования. Если значение свойства False, то для того, чтобы в ячейке появился курсор, надо начать набирать текст, нажать клавишу < F2> или сделать щелчок мышью
DefaultColWidth Ширину колонок таблицы
DefaultRowHeight Высоту строк таблицы
GridLineWidth Ширину линий, ограничивающих ячейки таблицы
Left Расстояние от левой границы поля таблицы до левой границы формы
Top Расстояние от верхней границы поля таблицы до верхней границы формы
Height Высоту поля таблицы
Width Ширину поля таблицы
Font Шрифт, используемый для отображения содержимого ячеек таблицы
ParentFont Признак наследования характеристик шрифта формы

После добавления компоненты StringGrid к форме нужно выполнить его настройку в соответствии с таблицей 12:

Таблица 12

Свойства компоненты Значение
ColCount 5 (число столбцов таблицы)
FixedCols 0 (объявление количества зафиксированных столбцов – обратите внимание на рисунок-24а)
RowCount 1 (число строк таблицы)
DefaultRowHeight 24 (высота строки по умолчанию)
Height  
DefaultColWidth 64 (ширина столбца по умлочанию)
Width  
Options-> goEditing True (разрешено редактирование ячейки таблицы)
Options-> AlwaysShowEditing True (разрешено редактирование ячейки, имющей фокус ввода)
Options-> goTabs True (разрешено обходить ячейки клавишей Tab (Shift+Nab))

 

2. Устанавливаем на форме кнопку BitBtn1, задаем свойство Kind равной bkOK, Значок этого компонента как и StringGrid находится во вкладке Additional палитры компонентов и используется как командная кнопка.

3. Основная работа выполняется при щелчке на кнопке BitBtn1 (событие OnClik). Вначале объявляем все переменные - исходные данные и результаты: a[5] - вводимый массив, summa- сумма элементов массива, sred - среднее арифметическое элементов массива, i – индекс.

float a[5]; float summa, sred; int i;

4. Ввод элементов массива: считаем, что если ячейка пустая, то соответствующий ей элемент массива равен нулю

for (i=0; i < n; i++)

if (StringGrid1-> Cells[i][0]==" ") a[i]=0;

else a[i]=StrToFloat(StringGrid1-> Cells[i][0]);

5. Обработка массива:

summa=0; // вначале сумматор или накопитель суммы равен нулю

for (i=0; i< 5; i++)// оператор цикла с параметром, перебирает элементы массивы с 0 по 4

summa=summa+a[i]; // данные в накопителе суммы увеличиваются на значение a[i]

sred=summa/5; //опоеделяем среднее арифметическое 5 цифр

5. Результаты представляем в компоненте Label

Label2-> Caption= “сумма элементов: ” + FloatToStr(summa)+”\n”+

“арифметическое среднее: ” + FloatToStr(sred);

6. Результаты вычислений приведены на рис.19. б.

Пример 2.3. Для массива, заданного рекурентной формулой :

1. сформировать массив по рекурентной формуле;

2. определить минимальный элемент массива и его порядковый номер;

3. определить максимальный элемент массива и его порядковый номер;

4. среднеарифметическое элементов массива;

5. количество элементов принадлежащих интервалу [2; 5].

Здесь: a0= 4.3; a1=1.8; i = 2, 3, …24.

Текст программы:

//---------------------------------------------------------------------------

#include < vcl.h>

#pragma hdrstop

#include < stdlib.h>

#include < math.h>

 

#include " Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource " *.dfm"

TForm1 *Form1;

int i, n;

float a[25];

//---------------------------------------------------------------------------

__fastcall TForm1:: TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1:: FormActivate(TObject *Sender)

{

Edit1-> SetFocus();

}

//---------------------------------------------------------------------------

void __fastcall TForm1:: Button1Click(TObject *Sender)

{

try

{n=StrToInt(Edit1-> Text);

a[0]= StrToFloat(Edit2-> Text);

a[1]= StrToFloat(Edit3-> Text);

}

catch (EConvertError&)

{

ShowMessage(" Вы ввели ошибочное число, повторите ввод");

}

/* массив қ ұ ру*/

for (i=2; i< n; i++)

a[i]= a[i-1]+ 2/a[i-2];

/* массивты шығ ару*/

for (i=0; i< n; i++)

Memo1-> Lines-> Add(" a[" +IntToStr(i)+" ]= " +FloatToStrF(a[i], ffFixed, 5, 2)+" ");

}

 

//---------------------------------------------------------------------------

void __fastcall TForm1:: Button2Click(TObject *Sender)

{ int max, min, k;

float sum=0.0;

if (CheckBox1-> Checked == True)

{for (i=max=0; i< n; i++) {

if (a[i]> a[max]) max=i;

}

Edit4-> Text=FloatToStrF(a[max], ffFixed, 5, 2);

}

if (CheckBox2-> Checked == True)

{for (i=min=0; i< n; i++) {

if (a[i]< a[min]) min=i; }

Edit5-> Text=FloatToStrF(a[min], ffFixed, 5, 2);

}

if (CheckBox3-> Checked == True)

{for (i=0; i< n; i++)

{sum += a[i]; }

sum = sum/n;

Edit6-> Text=FloatToStrF(sum, ffFixed, 5, 2);

}

if (CheckBox4-> Checked == True)

{for (i=k=0; i< n; i++) {

if (2< a[i] & & a[i]< 5) k++; }

Edit7-> Text=IntToStr(k);

}

}

 

//---------------------------------------------------------------------------

void __fastcall TForm1:: Button3Click(TObject *Sender)

{

Edit1-> Clear();

Edit2-> Clear();

Edit3-> Clear();

Edit4-> Clear();

Edit5-> Clear();

Edit6-> Clear();

Edit7-> Clear();

Memo1-> Clear();

}

//---------------------------------------------------------------------------

 

Рисунок 20. Результаты вычислений

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.