Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет мой.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
4.46 Mб
Скачать

Задача 11. Узоры

Напишите программу, в окне которой формируется узор из окружностей произвольного диаметра и цвета.

Вывод:

Листинг

Задача 12. Курс доллара

Напишите программу, в окне которой на фоне картинки отображается график изменения курса доллара .Данные должны загружаться из файла. (Рис. 72)

Рис 72

Вывод: В этом задании мы создалипрограмму, в окне которой на фоне картинки отображается график изменения курса доллара

Листинг

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

Graphics::TBitmap *bgp;

float data[] = {27.98, 28.01, 27.96, 27.96, 28.11, 28.08,

28.00, 27.98, 28.15,28.15, 28.11, 27.94, 27.86, 27.88, 27.95, 27.95};

AnsiString Title = "Изменение курса доллара";

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

bgp = new Graphics::TBitmap();

try

{

bgp->LoadFromFile("C:\\Users\\SysAdmin\\Desktop\\Никита - Антон\\ПрактикаПроги\\График\\sky.bmp");

}

catch (EFOpenError &e)

{ }

}

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

void __fastcall TForm1::FormPaint(TObject *Sender)

{

int n;

int x,y;

int dx;

int x0,y0;

Canvas->Font->Name = "Tahoma";

Canvas->Font->Size = 12;

x0 = (ClientWidth - Canvas->TextWidth(Title)) /2;

Canvas->Brush->Style = bsClear;

Canvas->TextOutA(x0,10,Title);

n = sizeof(data) / sizeof(float);

int min,max;

min =0;

max =0;

for (int i = 1; i < n; i++)

{

if (data[i] < data[min]) min = i;

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

}

bool frmin = true;

dx= (ClientWidth - 20) / (n-1);

Canvas->Font->Size -= 2;

Canvas->Pen->Color = clGreen;

Canvas->Pen->Width = 1;

x0 = 10;

y0 = ClientHeight - 10;

x = x0;

dx= (ClientWidth - 20) / (n-1);

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

{

if (! frmin)

y = y0 + (ClientHeight- - 90) * data [i]/data[max] ;

else

y = y0-(ClientHeight - 90) * (data[i]-data[min])/(data[max] - data[min])-10;

Canvas->Rectangle(x-2,y-2,x+2,y+2);

if (i != 0)

Canvas->LineTo(x,y);

if ( ( i == 0) || (data[i] != data[i-1]))

{

AnsiString st;

st = FloatToStrF(data[i] , ffGeneral, 5,2);

Canvas->Brush->Style = bsClear;

Canvas->TextOutA(x,y-20,st);

}

Canvas->MoveTo(x,y);

x += dx;

}

}

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

void __fastcall TForm1::FormResize(TObject *Sender)

{

Form1->Refresh();

}

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

Задача 13. Диаграмма

Напишите программу, в окне которой, в виде диаграммы, отображается динамика изменения, например, цены мониторов. (рис. 73)

Рис 73

Вывод: В этом задании мы сделали диаграмму на которой отображены цены на мониторы.

Листинг

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

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

float data[] = {27.98, 28.01, 27.96, 27.96, 28.11, 28.08,

28.00, 27.98, 28.15, 28.15, 28.11, 27.94,

27.86, 27.88, 27.95, 27.95};

AnsiString Title = "Изменениеценымониторов";

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TForm1::FormResize(TObject *Sender)

{

Form1->Refresh();

}

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

void __fastcall TForm1::FormPaint(TObject *Sender)

{

{

int x,y;

Canvas->Font->Name = "Tahoma";

Canvas->Font->Size =12;

x = (ClientWidth - Canvas->TextWidth(Title)) /2;

Canvas->Brush->Style = bsClear;

Canvas->TextOutA(x,10,Title);

int n;

int wCol;

#define MC 5

n = sizeof(data) / sizeof(float);

wCol = (ClientWidth - (n - 1)*MC - 20) / n;

x = 10;

y = ClientHeight - 20;

int min,max;

min =0;

max =0;

for (int i = 1; i < n; i++)

{

if (data[i] < data[min]) min = i;

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

}

bool frmin = true;

int h;

Canvas->Font->Size -= 2;

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

{

if (! frmin)

h = (ClientHeight - 90) * data[i]/data[max];

else

h = (ClientHeight - 90) * (data[i] - data[min])/(data[max] - data[min]) + 10;

Canvas->Brush->Style = bsSolid;

Canvas->Brush->Color = clLime;

Canvas->Rectangle(x,y,x+wCol,y-h);

AnsiString st;

st = FloatToStrF(data[i],ffGeneral,5,2);

Canvas->Brush->Style = bsClear;

Canvas->TextOutA(x,y-h-20,st);

x = x + wCol + MC;

}

}

}

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