Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.01.2016, 13:27
Appolinariya_ Appolinariya_ вне форума
Прохожий
 
Регистрация: 26.09.2015
Сообщения: 13
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Рисование графа

Пожалуйста, кто-нибудь помогите реализовать рисование неориентированного связного и несвязного графа по матрице смежности или матрице инциденций данного графа! Второй день сижу и не могу разобраться
Может быть у кого-нибудь уже была похожая задача?
Ответить с цитированием
  #2  
Старый 10.01.2016, 14:07
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А из Вики картинки не устроят? https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0_%D1%81% D0%BC%D0%B5%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8

https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0_%D0%B8% D0%BD%D1%86%D0%B8%D0%B4%D0%B5%D0%BD%D1%82%D0%BD%D0 %BE%D1%81%D1%82%D0%B8
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 10.01.2016, 14:08
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Какой вопрос - такой ответ
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Grids;
 
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button3: TButton;
    Panel1: TPanel;
    Edit1: TEdit;
    Button4: TButton;
    Label1: TLabel;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    StringGrid2: TStringGrid;
    Button5: TButton;
    Image1: TImage;
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure StringGrid2KeyPress(Sender: TObject; var Key: Char);
    procedure StringGrid2SelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
      const Value: String);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  max1,max2,Coll,Roww:integer;
  qw:boolean;
implementation
 
uses Unit2;
 
{$R *.dfm}
 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8]) then key:=#0;
end;
 
 
procedure TForm1.Button4Click(Sender: TObject);
  var i,j,m:integer;
begin
    stringgrid1.RowCount:=strtoint(edit1.text)+1;
    stringgrid1.colCount:=strtoint(edit1.text)+1;
  {  for i:=1 to stringgrid1.colCount-1 do
       for j:=1 to stringgrid1.rowCount-1 do
          if i=j then stringgrid1.cells[i,j]:='0';}
          m:=StringGrid1.RowCount;
    with StringGrid1 do
            begin
              j:=1;
              m:=m+65;
              for i:=65 to m do
                begin
                  cells[j,0]:=chr(i);
                  inc(j);
                end;
            end;
            m:=StringGrid1.colCount;
    with form1.StringGrid1 do
            begin
              j:=1;
              m:=m+65;
              for i:=65 to m do
                begin
                  cells[0,j]:=chr(i);
                  inc(j);
                end;
            end;
      memo1.Text:='Матрица смежности готова для заполнения';
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
     Form1.Close;
end;
 
procedure TForm1.StringGrid2KeyPress(Sender: TObject; var Key: Char);
begin
 with TStringGrid(Sender) do
  if (Length(Cells[Col,Row])=1)and (not(key in [#8])) then key:=#0;
 
end;
 
procedure TForm1.StringGrid2SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
  {  with TStringGrid(Sender) do
      if (Length(Cells[Col,Row])=1) then Cells[Col,Row]:='';   }
end;
 
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
    with TStringGrid(Sender) do
  if (Length(Cells[Col,Row])=1)and (not(key in ['1'..'9',#8])) then key:=#0;
 
end;
 
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: String);
begin
    stringgrid1.Cells[arow,acol]:=stringgrid1.Cells[acol,arow];
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;
begin
  with StringGrid1 do
      for i:=1 to colCount-1 do
       for j:=1 to rowCount-1 do
        cells[i,j]:='';
  with StringGrid2 do
      for i:=1 to colCount-1 do
       for j:=1 to rowCount-1 do
        cells[i,j]:='';
  memo1.Text:='Таблицы очищены!';
  qw:=false;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
    for i:=1 to stringgrid1.colCount-1 do
       for j:=1 to stringgrid1.rowCount-1 do
          if stringgrid1.cells[i,j]='' then stringgrid1.cells[i,j]:='0';
end;
 
procedure TForm1.Button5Click(Sender: TObject);
var i,j,k,m,p,kk:integer;
    qw:boolean;
begin
  for i:=1 to stringgrid1.ColCount-1 do
    for j:=1 to stringgrid1.rowCount-1 do
      if stringgrid1.cells[i,j]='' then qw:=true;
  if qw=true then showmessage('Матрица не заполнена!') else
  begin
    k:=0;
    stringgrid2.colCount:=stringgrid1.RowCount;
    for i:=1 to stringgrid1.colCount-1 do
       for j:=1 to stringgrid1.rowCount-1 do
          if stringgrid1.cells[i,j]<>'0' then inc(k);
    k:=k div 2;
    stringgrid2.rowCount:=k+1;
    m:=form1.StringGrid2.colCount;
          with form1.StringGrid2 do
            begin
              for i:=1 to rowcount-1 do
                cells[0,i]:=inttostr(i);
            end;
          with form1.StringGrid2 do
            begin
              j:=1;
              m:=m+65;
              for i:=65 to m do
                begin
                  cells[j,0]:=chr(i);
                  inc(j);
                end;
            end;
      kk:=1;
      p:=2;
      for j:=1 to stringgrid1.rowcount-1 do
 
        for i:=p to stringgrid1.ColCount-1 do
          if stringgrid1.Cells[i,j]='1' then
            begin
              stringgrid2.Cells[i,kk]:='1';
              stringgrid2.Cells[J,kk]:='1';
              inc(kk);
              inc(p);
            end;
      for i:=1 to stringgrid2.colCount-1 do
       for j:=1 to stringgrid2.rowCount-1 do
          if stringgrid2.cells[i,j]='' then stringgrid2.cells[i,j]:='0';
      memo1.Text:='Матрица инцидентности успешно создана';
   end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
   form2.visible:=false;
  memo1.Clear;
  memo1.Text:='Введите количество вершин графа';
  qw:=false;
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  form2.visible:=true;
end;
 
end.

// cyberforum.ru/delphi-beginners/thread1210553.html
примеров в сети - море, учитесь пользоваться поисковиком
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:16.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter