Скачиваний:
15
Добавлен:
28.06.2014
Размер:
6.19 Кб
Скачать
//---------------------------------------------------------------------------

#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;

}
//---------------------------------------------------------------------------

Соседние файлы в папке вот
  • #
    28.06.20143.73 Кб15Project1.bpr
  • #
    28.06.20141.07 Кб15Project1.cpp
  • #
    28.06.201417.72 Кб16Project1.obj
  • #
    28.06.2014876 б15Project1.res
  • #
    28.06.20142.16 Mб15Project1.tds
  • #
    28.06.20146.19 Кб15Unit1.cpp
  • #
    28.06.201451 б15Unit1.ddp
  • #
    28.06.20143.86 Кб15Unit1.dfm
  • #
    28.06.20142.44 Кб16Unit1.h
  • #
    28.06.2014112.18 Кб15Unit1.obj
  • #
    28.06.20146.28 Кб15Unit1.~cpp