- •2 . Пример
- •Лабораторная работа № 2
- •1 Содержание работы
- •1 Порядок выполнения лабораторной работы:
- •Задание
- •2. Пример
- •Лабораторная работа№ 3
- •1 Порядок выполнения лабораторной работы:
- •Задание
- •Часть вторая: Оператор выбора
- •1 Порядок выполнения лабораторной работы:
- •Задание
- •Группа а Таблица 7
- •Группа в
- •2. Примеры
- •Лабораторная работа№ 4
- •1 Порядок выполнения лабораторной работы:
- •Задание
- •2 Примеры
- •For (выражение1; выражение2;выражение3) {операторы; }
- •Лабораторная работа№ 5
- •1 Порядок выполнения лабораторной работы:
- •Задание
- •2. Примеры
- •3. Сортировка элементов массива
- •Сортировка выбором
- •3.2. Сортировка вставкой
- •3.3. Сортировка методом прямого выбора
- •3.4. Сортировка методом обмена
- •Лаборатоная работа № 6
- •1 Порядок выполнения лабораторной работы:
- •Задание
- •Методические указания
- •Лабораторная работа № 7
- •1 Порядок выполнения лабораторной работы:
- •Лаборатоная работа № 8
- •1 Порядок выполнения лабораторной работы:
- •Задания
- •2. Теоретические сведения
- •Год рождения – 1978
- •Лабораторная работа № 9
- •1 Порядок выполнения лабораторной работы:
- •Лабораторная работа № 10
- •1 Порядок выполнения лабораторной работы:
- •2. Задание для выполнения
- •2. Примеры
- •Лабораторная работа № 11
- •1 Порядок выполнения лабораторной работы:
- •2. Задание для выполнения
- •Варианты заданий
- •Лабораторная работа № 12
- •1 Порядок выполнения лабораторной работы:
- •2. Краткие теоретические сведения Объектно-ориентированный подход
- •Сущности и Объекты
- •Система типов
- •Инкапсуляция
- •Пример класса
- •Создание объектов. Конструкторы и деструктор
- •Наследование
- •Перегрузка функций
- •Полиморфизм
- •Функции-друзья
- •Абстрактные классы
- •Дополнительные возможности
- •Индивидуальные задания
- •2.1. Пример решения задания
- •Int windForce; // Сила ветра в баллах
- •Int startHeight; // Начальная высота
- •Int fuel; // Запас топлива
- •Результат выполнения программы:
- •Список использованной литературы
2. Примеры
Пример 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 |
24 |
DefaultColWidth |
64 (ширина столбца по умлочанию) |
Width |
328 |
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 . Для массива,
заданного рекурентной формулой
:
сформировать массив по рекурентной формуле;
определить минимальный элемент массива и его порядковый номер;
определить максимальный элемент массива и его порядковый номер;
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. Результаты вычислений
