Добавил:
Tushkan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы / Курсовая / вот / Unit1
.cpp//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
int nver = -1;
int ves[100][100];
struct Tochka
{
int x;
int y;
};
void VerPaint (int x, int y, int n)
{
Form1->Image1->Canvas->Pen->Color=0x00ff00;
Form1->Image1->Canvas->Ellipse(x-10,y-10,x+10,y+10);
Form1->Image1->Canvas->TextOutA(x-4,y-6,IntToStr(n));
}
void RebPaint (Tochka t1, Tochka t2, int ves)
{
Form1->Image1->Canvas->Pen->Color=0xffaa00;
Form1->Image1->Canvas->MoveTo(t1.x,t1.y);
Form1->Image1->Canvas->LineTo(t2.x,t2.y);
Form1->Image1->Canvas->TextOutA((t2.x+t1.x)/2,(t2.y+t1.y)/2,ves);
}
void PaintX (Tochka t1, Tochka t2)
{
Form1->Image1->Canvas->Pen->Color=0x0000aa;
Form1->Image1->Canvas->MoveTo(t1.x,t1.y);
Form1->Image1->Canvas->LineTo(t2.x,t2.y);
}
Tochka t[100];
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(Edit1->Text!="" && Edit2->Text!="")
{
nver++;
int n = nver;
t[n].x = StrToInt(Edit1->Text);
t[n].y = StrToInt(Edit2->Text);
StrGr1->Cells[0][n+1]=IntToStr(n);
StrGr1->Cells[n+1][0]=IntToStr(n);
StrGr1->Cells[n+1][n+1]="0";
for(int i=1;i<nver+2;i++)
{
StrGr1->Cells[i][n+1]="0";
StrGr1->Cells[n+1][i]="0";
}
VerPaint(t[n].x,t[n].y,n);
StrGr1->ColCount = n + 2;
StrGr1->RowCount = n + 2;
}
Edit1->Text = "";
Edit2->Text = "";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int v1, v2;
if(Edit3->Text!="" && Edit4->Text!="" && Edit5->Text!="")
{
v1 = StrToInt(Edit3->Text);
v2 = StrToInt(Edit4->Text);
ves[v1][v2] = ves[v2][v1] = StrToInt(Edit5->Text);
if(nver>0 && v1<=nver && v2<=nver)
{
StrGr1->Cells[v1+1][v2+1]=1;
StrGr1->Cells[v2+1][v1+1]=1;
}
RebPaint(t[v1],t[v2],ves[v1][v2]);
VerPaint(t[v1].x,t[v1].y,v1);
VerPaint(t[v2].x,t[v2].y,v2);
}
Edit3->Text = "";
Edit4->Text = "";
Edit5->Text = "";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
for(int i=0;i<100;i++)
for(int j=0;j<100;j++)
ves[i][j]=ves[j][i]=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
for(int i=0;i<100;i++)
for(int j=0;j<100;j++)
ves[i][j]=ves[j][i]=0;
Form1->Image1->Canvas->Rectangle(0,0,Form1->Image1->Width,Form1->Image1->Height);
nver=6;
t[0].x=100;t[0].y=100;
t[1].x=100;t[1].y=200;
t[2].x=160;t[2].y=230;
t[3].x=179;t[3].y=176;
t[4].x=234;t[4].y=210;
t[5].x=258;t[5].y=140;
StrGr1->ColCount = 7;
StrGr1->RowCount = 7;
for (int i=0;i<nver;i++)
{VerPaint(t[i].x,t[i].y,i);
}
for(int i=1;i<8;i++)
for(int j=1;j<8;j++)
{
StrGr1->Cells[i][j]="0";
}
for(int i=0;i<7;i++)
{
StrGr1->Cells[i+1][0]=IntToStr(i);
StrGr1->Cells[0][i+1]=IntToStr(i);
}
RebPaint(t[0],t[1],6); StrGr1->Cells[1][2]=1; StrGr1->Cells[2][1]=1;
RebPaint(t[2],t[1],13); StrGr1->Cells[3][2]=1; StrGr1->Cells[2][3]=1;
RebPaint(t[3],t[5],7); StrGr1->Cells[4][6]=1; StrGr1->Cells[6][4]=1;
RebPaint(t[2],t[0],12); StrGr1->Cells[3][1]=1; StrGr1->Cells[1][3]=1;
RebPaint(t[1],t[4],32); StrGr1->Cells[2][5]=1; StrGr1->Cells[5][2]=1;
RebPaint(t[2],t[5],18); StrGr1->Cells[3][6]=1; StrGr1->Cells[6][3]=1;
ves[0][1]=ves[1][0]=6;
ves[2][1]=ves[1][2]=13;
ves[3][5]=ves[5][3]=7;
ves[2][0]=ves[0][2]=12;
ves[1][4]=ves[4][1]=32;
ves[2][5]=ves[5][2]=18;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
if(Edit3->Text!="" && Edit4->Text!="" && Edit5->Text!="")
{
Edit6->Text = "";
int n;
for(int i=0;i<nver;i++)
for(int j=0;j<nver;j++)
if(ves[i][j]!=0)
RebPaint(t[i],t[j],ves[i][j]);
int v1 = StrToInt(Edit3->Text);
int v2 = StrToInt(Edit4->Text);
int P = StrToInt(Edit5->Text);
int c[100];
F(ves,nver,v1,v2,P,c,n);
AnsiString str = "нет путей";
if (n!=0) str = "Больше " + str;
if (m<=n)
{
int s=0; int j;
j=g;
while (c[j]!=-1) {s++;j++;}
for(int i=g;i<g+s;i++)
Edit6->Text = Edit6->Text + IntToStr(c[i])+ " ";
for(int i=g+1;i<g+s;i++)
{
PaintX(t[c[i-1]],t[c[i]]);
}
g+=s+1;
m++;
}
else
{
ShowMessage(str);
m=1;
g=0;}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
for(int i=0;i<100;i++)
for(int j=0;j<100;j++)
ves[i][j]=ves[j][i]=0;
Form1->Image1->Canvas->Rectangle(0,0,Form1->Image1->Width,Form1->Image1->Height);
nver=6;
t[0].x=100;t[0].y=100;
t[1].x=100;t[1].y=200;
t[2].x=200;t[2].y=100;
t[3].x=200;t[3].y=200;
t[4].x=100;t[4].y=300;
t[5].x=200;t[5].y=300;
StrGr1->ColCount = 7;
StrGr1->RowCount = 7;
for (int i=0;i<nver;i++)
{VerPaint(t[i].x,t[i].y,i);
}
for(int i=1;i<8;i++)
for(int j=1;j<8;j++)
{
StrGr1->Cells[i][j]="0";
}
for(int i=0;i<7;i++)
{
StrGr1->Cells[i+1][0]=IntToStr(i);
StrGr1->Cells[0][i+1]=IntToStr(i);
}
RebPaint(t[0],t[1],6); StrGr1->Cells[1][2]=1; StrGr1->Cells[2][1]=1;
RebPaint(t[2],t[1],13); StrGr1->Cells[3][2]=1; StrGr1->Cells[2][3]=1;
RebPaint(t[2],t[0],12); StrGr1->Cells[3][1]=1; StrGr1->Cells[1][3]=1;
RebPaint(t[1],t[3],32); StrGr1->Cells[2][4]=1; StrGr1->Cells[4][2]=1;
RebPaint(t[4],t[5],18); StrGr1->Cells[5][6]=1; StrGr1->Cells[6][5]=1;
ves[0][1]=ves[1][0]=6;
ves[2][1]=ves[1][2]=13;
ves[2][0]=ves[0][2]=12;
ves[1][3]=ves[3][1]=32;
ves[4][5]=ves[5][4]=18;
}
//---------------------------------------------------------------------------
Соседние файлы в папке вот