نمایش نتایج 1 تا 17 از 17

نام تاپیک: درباره مسئله رنگ آمیزی گراف

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #3
    کاربر دائمی
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    قفس فیلترینگ(ایران)
    پست
    208

    برنامه

    شبه کد این برنامه رو آقای جم پور(ارائه کننده مقاله) برای بنده ارسال کرده که متاسفانه دچار مشکل شده بود ولی کد برنامه به شرح زیر است.

    Program Coloring_Graph;

    uses Crt,Graph;

    Type rec= Record
    x: integer;
    y: integer;
    end;

    var
    Matrix : Array [1..10,1..10] of Byte;
    Deadline : Array [1..10,1..10] of Byte;
    Colors : Array [1..10] of Byte;
    Last: Array [1..10] of Byte;
    Locat:Array [1..10] of Rec;
    i,j,n : integer;

    {************************************************* ******************}
    Procedure Drawing;
    var
    Gd, Gm,clr: Integer;
    begin
    Gd := Detect;
    InitGraph(Gd, Gm, '');
    if GraphResult <> grOk then
    Halt(1);

    setfillstyle(1,8);
    bar(350,30,570,160);
    setcolor(7);
    Rectangle(350,30,570,160);
    line(350,55,570,55);
    setcolor(15);

    Locat[1].x:=50; Locat[1].y:=100;
    Locat[2].x:=100; Locat[2].y:=50;
    Locat[3].x:=150; Locat[3].y:=50;
    Locat[4].x:=200; Locat[4].y:=100;
    Locat[5].x:=200; Locat[5].y:=150;
    Locat[6].x:=150; Locat[6].y:=200;
    Locat[7].x:=100; Locat[7].y:=200;
    Locat[8].x:=50; Locat[8].y:=150;

    setcolor(14);
    for i:=1 to n-1 do
    for j:=i+1 to n do
    begin
    if Matrix[i,j]<> 0 then
    Line(locat[i].x,locat[i].y,locat[j].x,locat[j].y);
    end;

    for i:=1 to n do
    begin
    if (colors[i]>=3)
    then clr:=colors[i]+1 else clr:=colors[i];
    setcolor(15);
    SetFillStyle(1,clr);
    fillEllipse(locat[i].x,locat[i].y,10,10);
    end;

    setcolor(15);
    for i:=1 to n do
    OutTextXY(locat[i].x-2,locat[i].y-3,char(64+i));

    Readkey;
    CloseGraph;
    end;
    {************************************************* *******************}
    Procedure Select_color( p,index:byte);
    var i,j:integer;
    begin
    for i:=1 to n do
    begin
    for j:=1 to n do
    if deadline[j,p]=i then break;
    if j=n then
    begin
    Colors[p]:=i;
    deadline[index,p]:= Colors[p];
    last[p]:=last[p] + 1;
    break;
    end;
    end;
    end;
    {
    ************************************************** ***************
    * s t a r t p r o g r a m *
    ************************************************** ***************
    }
    Begin
    clrscr;
    write('please set size of matrix [ n<8 !] : ');
    readln(n);

    if n>8 then halt;
    for i:=1 to n do
    last[i]:=1;


    for i:=1 to n-1 do
    for j:=i+1 to n do
    begin
    write('[',i,',',j,'] : ');
    read(Matrix[i,j]);
    Matrix[j,i]:=Matrix[i,j];
    end;

    for i:=1 to n do
    for j:=1 to n do
    begin
    gotoxy(10+2*i,j+5);
    Write(Matrix[i,j]);
    end;

    for i:=1 to n do
    begin
    Select_color(i,last[i]);

    for j:=1 to n do
    if Matrix[i,j]<>0 then
    begin
    Deadline[last[j],j]:=Colors[i] ;
    last[j]:=last[j] + 1 ;
    end;
    end;

    for i:=1 to n do
    begin
    gotoxy(10+3*i,20);
    Write(Colors[i]);
    end;

    Readkey;
    Drawing;
    End.
    آخرین ویرایش به وسیله MIDOSE : شنبه 28 آذر 1388 در 02:14 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •