Лабораторна робота 1
Тема. Програмування з використанням структур у середовищі С++ Builder
Мета. Написати програму з використанням даних типу структура
Теоретичні відомості
Структура може бути представлена як деякий набір різнотипних і/або однотипних даних, сукупність яких розглядається як зовсім новий, користувацький тип даних. Структура оголошується за допомогою ключового слова struct, за яким слідує необов’язкове ім’я тега для створення нового типу даних і шаблон, що вказується у фігурних дужках, за яким будуть створюватися змінні структурного типу. Шаблон містить оголошення полів або членів структури, що вказуються через крапку з комою. Оголошення поля складаються з типу й імені змінної:
struct NewType
{
typel Namel;
type2 Name2;
…
typeN NameN;
};
Синтаксис опису структури закінчується символом крапка з коми (;).
Використання структурованих даних у тілі програми можливо в тому випадку, якщо буде оголошений який-небудь об’єкт знову створеного типу. Наприклад, для приведеного вище синтаксису можна вказати:
NewType Variable;
Таким чином, буде створений структурований об’єкт Variable типу NеwType. Крім того, об’єкт Variable міг бути створений безпосередньо при оголошенні структури:
struct NewType
{
typel Namel;
type2 Name2;
…
type Name;
} Variable;
Доступ до полів структури здійснюється через операцію (.) або (->).
Приклад виконання завдання
Завдання: Дано відомість абітурієнтів, що здали вступні іспити. Кожний запис містить прізвище, оцінки по фізиці, математиці і хімії. Вивести список абітурієнтів, що мають середній бал вище 4,5 в порядку зменшення їх середнього бала.
Форма наведена на рис. 1.
Текст програми:
#include <vcl.h>
#pragma hdrstop
#include "Unitl.h"
#pragma расkage(smart_init)
#pragma resource "*.dfm"
TForml *Form1;
struct TStudent
{
AnsiString FIO;
int otc[3];
double srb;
};
TStudent Stud[100], st;
int nzap=-1;
fastcall TForml ::TForm1(TComponent* Owner) : TForm(Owner)
{ }
//
void fastcall TForml ::FormCreate(TObject *Sender)
{
Edit1->Text="";
Edit2->Text="";
Edit3->Text="";
Edit4->Text="";
Memo1->Clear();
}
//
void fastcall TForml ::BitBtn1Click(TObject *Sender)
{
nzap++;
Stud[nzap].FIO = Edit1->Text;
Stud[nzap].otc[0]=StrToInt(Edit2->Text);
Stud[nzap].otc[1]=StrToInt(Edit3->Text);
Stud[nzap].otc[2]=StrToInt(Edit4->Text);
Stud[nzap].srb=(Stud[nzap].otc[0] + Stud[nzap].otc[1] + Stud[nzap].otc[2]) / 3.0;
Memo1->Lines->Add(Stud[nzap].FIO + " " + IntToStr(Stud[nzap].otc[0]) + " "
+ IntToStr(Stud[nzap].otc[1]) + " " + IntToStr(Stud[nzap].otc[2]));
Edit1->Text="";
Edit2->Text="";
Edit3->Text="";
Edit4->Text="";
}
//
void fastcall TForml ::BitBtn2Click(TObject *Sender)
{
Memo1->Lines->Add("\nResult");
for (int i=0; i<=nzap-1; i++)
for (int j=i+1; j<=nzap; j++)
if (Stud[i].srb>Stud[j].srb)
{
st= Stud[i];
Stud[i]= Stud[j];
Stud[j]=st;
}
for (int i=0; i<=nzap; i++)
if (Stud[i].srb>4.5)
Memo1->Lines->Add(Stud[i].FIO + " " + IntToStr(Stud[i].otc[0]) + " " +
IntToStr(Stud[i].otc[1]) + " " + IntToStr(Stud[i].otc[2]));
}
Рис.1 Вікно виконання програми