Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота1.doc
Скачиваний:
2
Добавлен:
18.11.2019
Размер:
76.8 Кб
Скачать

Лабораторна робота 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 Вікно виконання програми