ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 19.07.2024
Просмотров: 39
Скачиваний: 0
Лабораторная работа №16
Тема: Программирование на языке С++ с использованием классов.
Цель работы: 1) изучить возможности программирования классов на языке С++;
2) получить основные навыки программирования манипуляторов ввода/вывода.
КОД
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "sColorSelect"
#pragma link "sSpeedButton"
#pragma link "sLabel"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
int r,kilk=0;
class Tstack{
public:
int info;
Tstack *next;
//public:
stack(int n);
~Tstack();
void View (Tstack);
float ser_aryfm(Tstack);
int find(Tstack, int);
} *begin,*t;
Tstack* InStack(Tstack *, int);
void Del_All(Tstack **);
Tstack::stack(int n){
int in;
for(int i = 1; i <= n; i++){
in = random(20);
begin = InStack(begin, in);
}
}
Tstack::~Tstack()
{
Del_All(&begin);
}
Tstack a;
void Del_All(Tstack **p){
while(*p != NULL){
t = *p;
*p = (*p) -> next;
delete t;
}
}
float ser_aryfm(Tstack *p)
{
float sum=0;
Tstack *t = p;
while( t != NULL){
sum+=t->info;
r++;
t = t -> next;
}
sum/=r;
return sum;
}
int find (Tstack *p,int k)
{
Tstack *t = p;
while( t != NULL){
if(r==k)
return t->info;
else
t = t -> next;
r++;
}
}
//--------------- Функцiя дoдавання eлeмeнту в Cтeк ------------------------
Tstack* InStack( Tstack *p, int in){
Tstack *t = new Tstack;
t -> info = in;
t -> next = p;
return t;
}
//----------------- Функцiя пeрeгляду Cтeка----------------------------------
void View(Tstack *p){
Tstack *t = p;
while( t != NULL){
Form1 ->Memo1 ->Lines ->Add(" " + IntToStr( t ->info));
// У кoнcoльнoму заcтocуваннi будe, наприклад, cout << " " << t ->info << endl;
t = t -> next;
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
kilk=0;
Memo1->Clear();
int n;
try{ n=StrToInt(Edit1->Text);
} catch(EConvertError &e) {ShowMessage("Превірте правильність введених данних."); return;}
a.stack(n);
View(begin);
kilk+=n;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Memo1->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Memo1->Clear();
int n;
try{ n=StrToInt(Edit1->Text);
} catch(EConvertError &e) {ShowMessage("Превірте правильність введених данних."); return;}
begin=InStack(begin,n);
View(begin);
kilk++;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
a.~Tstack();
Memo1->Clear();
View(begin);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
float k;
Memo1->Clear();
View(begin);
r=0;
k=ser_aryfm(begin);
Memo1->Lines->Add("Середнє арифметичне= "+FloatToStrF(k,ffFixed, 3,2));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
int k,rez;
r=0;
try{ k=StrToInt(Edit1->Text);
} catch(EConvertError &e) {ShowMessage("Превірте правильність введених данних."); return;}
if(k>kilk-1 || k<0){ ShowMessage("Елемента не знайдено"); return;}
rez=find(begin,k);
Memo1->Lines->Add("Знайдено= "+IntToStr(rez));
}
//---------------------------------------------------------------------------
Висновок: изучить возможности программирования классов на языке С++; получить основные навыки программирования манипуляторов ввода/вывода.