Люди, помогите мне ,пожалуйста сделать прогу! Не получается! Надо построить «красивый» граф, задавая количество вершин графа. Граф строится на основе матриц смежности и инцидентности (ориентированный и неориентированный). Матрицы заполняются через Randomize. Матрицы nxn. ПОМОГИТЕ, ПОЖАЛУЙСТА!!!
http://forum.pascal.net.ru/index.php?showtopic=4030&st=0&p=42335entry42335
И вообще поиск по ключевым словам
ориентированный (неориентированный) граф
матрица смежности и инцидентности
должен привести к успеху.
Народ,пожалуйста,помогите!!! Там ничего такого нет!
что значит "построить красивый граф"?
чем красивый отличается от некрасивого?
Секунду, Guzel, "построить" - имеется в виду "нарисовать"?
Критерии есть? (в частности, пересечения дуг допустимы? Ограничения на N?)
Ну...Ребят,помогите!!!
Ну, что никто не может что ли!!!!????Ну очень надо!!!Пожалуйста!!!
нас когда учили писать ТЗ (на разработку сайта), сказали: "Слова "красивый", "привлекательный" и т.д. забудьте. Четко формулируйте требования".
Ты четко требования сформулировать не можешь...
Откуда я знаю твои вкусы? Что, по-твоему, красиво, а что нет.
вершины кружочками рисовать умеешь?
то есть нарисовать n кружочков?... раскиданных по экрану.
ну... надо же с чего-то начинать рисовать граф я думаю, правильнее с вершин, а потом уже соединять их дугами.
ты, конечно, извини, но, думаешь, других не грузят?
здесь все или учатся, или работают, или учатся+работают.
значит, кто-то должен тратить свое время, потому что тебе некогда (=лень) попробовать самой разобраться?
хочешь, чтобы помогли - пожалуйста. но ты сама тоже должна будешь что-то делать!
тогда вопрос о кружочках в силе.
ну это как хочешь.
я думаю, лучше все же по какому-то закону, чтобы они друг на друга не налезали.
а чтобы совсем просто было потом работать и не хранить отдельно координаты (хотя, конечно, не проблема создать дополнительный массив) - задать закон зависимости координаты от номера вершины.
для начала можно просто выводить в 2 столбика.
для этого надо знать размеры экрана, в котором рисуем, и количество вершин.
по этим данным рассчитываем шаг, задаем центр первой окружности и начинаем рисовать...
что-то ничего особо разумного не придумывается, кроме того, что дуги рисовать не прямыми линиями, а округыми, если они кратные...
то есть первая - прямая, а дальше - закругленные с разным радиусом кривизны - отступом от прямой.
а как? я это визуально не представляю...
нарисуй, пожалуйста, и прикрепи изображение.
uses crt,graph;
var
x,y,b:array [1..100] of integer;
a1,a:array [1..100,1..100] of integer;
f:text;
n,i,j,e,gm,gd,d,c,t,q:integer;
s,s1,s2:string;
begin
clrscr;
assign(f,'f1');
reset(f);
readln(f,n);
for i:=1 to n do for j:=1 to n do begin readln(f,A[i,j]);end;
{---------------------------------}
{n:=3;
b[1]:=1; b[5]:=0; b[9]:=1; b[13]:=1;
b[2]:=1; b[6]:=1; b[10]:=1; b[14]:=1;
b[3]:=0; b[7]:=0; b[11]:=1; b[15]:=1;
b[4]:=1; b[8]:=1; b[12]:=1; b[16]:=1;}
gd:=detect;
initgraph(gd,gm,'c:\tp\bgi');
e:=graphresult;
if e<>grok then writeln(grapherrormsg(e))
else randomize;
c:=0 ;
for i:=1 to n do
for j:=1 to n do begin
str(a[i,j],s1);
outtextxy(20+(j*10),20+(i*10),s1);
end;
outtextxy(2,2,'kr ot>k<; zel ot<k>');
for I:=1 to n do begin
x[i]:=random(400);
y[i]:=random(400);
str(i,s);
putpixel(x[i],y[i],15);
outtextxy(x[i],y[i],s);
end;
for I:=1 to n do
for j:=1 to n do
begin
setcolor(2);
if i=j then if a[i,j]=1 then circle(x[i],y[i],12);
end;
for I:=1 to n do
for j:=1 to n do
begin
setlinestyle(3,0,3);
setcolor(2);
if i>j then if a[i,j]=1 then line(x[i],y[i],x[j],y[j]);
end;
for I:=1 to n do
for j:=1 to n do
begin
setlinestyle(0,0,1);
setcolor(6);
if i<j then if a[i,j]=1 then line(x[i],y[i],x[j],y[j]);
end;
readkey;
graphdefaults;
cleardevice;
assign(f,'f1');
reset(f);
readln(f,n);
for i:=1 to n do
for j:=1 to n do begin
str(a[i,j],s1);
outtextxy(20+(j*10),20+(i*10),s1);
end;
for i:=1 to n*n do
begin
readln(f,b[i]);
writeln('b[',i,']=',b[i]);
end;
for I:=1 to n do begin
x[i]:=random(400);
y[i]:=random(400);
str(i,s);
putpixel(x[i],y[i],15);
outtextxy(x[i],y[i],s);
end;
for t:=1 to n do
for I:=1 to n do
for j:=1 to n do
begin
setlinestyle(4,00010,3);
setcolor(2);
line(500,10,550,10); line(500,50,550,50);
if t=1 then if b[i]=1 then if b[j]=1 then line(x[i],y[i],x[j],y[j]);
setlinestyle(4,1000,2);
setcolor(6);
if t=2 then if b[i+n]=1 then if b[j+n]=1 then begin
line(x[i],y[i],x[j],y[j]);
line(500,20,550,20); line(500,50,550,50);
end;
setlinestyle(4,10000,2);
setcolor(3);
if t=3 then if b[i+n*2]=1 then if b[j+n*2]=1 then begin
line(x[i],y[i],x[j],y[j]);
line(500,30,550,30); line(500,50,550,50);
end;
setlinestyle(4,0001,0);
setcolor(15);
if t=4 then if b[i+n*3]=1 then if b[j+n*3]=1 then begin
line(x[i],y[i],x[j],y[j]);
line(500,40,550,40); line(500,50,550,50);
end;
setlinestyle(0,0,1);
setcolor(1);
if t=5 then if b[i+n*4]=1 then if b[j+n*4]=1 then begin
line(x[i],y[i],x[j],y[j]);
line(500,50,550,50); line(500,50,550,50);
end;
end;
readkey;
end.
! | DOC файлы запрещены правилами... Хочешь прикреплять - прикрепляй JPEG/PNG, а не DOC... |
не очень поняла.
просто некоторые ребра рисуются ломаными?