• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Задача: построение фигуры по точкам, периметр (C++Builder)

  • Автор темы StydenTo4ka
  • Дата начала
S

StydenTo4ka

C++:
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"

#include <fstream.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
struct Koord{
int x;
int y;
};
const int K=100;
Koord mast[K];
int i=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{ {
if(Shift.Contains(ssLeft)){
mast[i].x=X;
mast[i].y=Y;
Image1->Canvas->Brush->Color=clWhite;
Image1->Canvas->TextOutA(X,Y+5,i+1);
Image1->Canvas->Brush->Color=clRed;
Image1->Canvas->Ellipse(X-5,Y-5,X+5,Y+5);
i++;}
}

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
{
if(i>0){
for(int j=0;j<i-1;j++){
Image1->Canvas->Pen->Color=clBlue;
Image1->Canvas->MoveTo(mast[j].x,mast[j].y);
Image1->Canvas->LineTo(mast[j+1].x,mast[j+1].y);
}
}
}	 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
{


if(SaveDialog1->Execute()){
ofstream fout(SaveDialog1->FileName.c_str());
for(int j=0;j<i;j++){
fout<<mast[j].x<<" "<< mast[j].y<<"\n";
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
{
Image1->Canvas->Brush->Color=clWhite;
Image1->Canvas->FillRect(Rect(0,0,Image1->Width,Image1->Height));
i=0;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{ {
i=0;
if(OpenDialog1->Execute()){
ifstream fin(OpenDialog1->FileName.c_str());
char s;
int k=0;
while(!fin.eof()){
fin.get(s);
if(s=='\n') k++;}
k=k-1;
Koord *m=new Koord[k];
fin.close();
ifstream fin2(OpenDialog1->FileName.c_str());
for(int j=0;j<k;j++){
fin2>>m[j].x>>m[j].y;
}
fin2.close();
for(int j=0;j<k;j++){
Image1->Canvas->Brush->Color=clWhite;
Image1->Canvas->TextOutA(m[j].x,m[j].y+5,i+1);
Image1->Canvas->Brush->Color=clRed;
Image1->Canvas->Ellipse(m[j].x-5,m[j].y-5,m[j].x+5,m[j].y+5);
i++;
}
for(int j=0;j<i-1;j++){
Image1->Canvas->Pen->Color=clBlue;
Image1->Canvas->MoveTo(m[j].x,m[j].y);
Image1->Canvas->LineTo(m[j+1].x,m[j+1].y);
}
}
}

}



надо дописать..что бы фигура все таки образовывалась, считать ее периметр..
еще что бы вершины были разных цветов, а при нажатии на специальную кнопку по часовой стрелке цвета вершин менялись

может кто-нибудь помочь?
 
D

DarkKnight

надо дописать..что бы фигура все таки образовывалась, считать ее периметр..
еще что бы вершины были разных цветов, а при нажатии на специальную кнопку по часовой стрелке цвета вершин менялись

может кто-нибудь помочь?

Помогу, если скинишь исходные файлы с Билдера....
 
D

DarkKnight

Прямо сюда... :)
*снизу можно прикреплять файлы (сначало только заархивируй)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!