Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на Граф
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Guzel
unsure.gif Люди, помогите мне ,пожалуйста сделать прогу! Не получается! Надо построить «красивый» граф, задавая количество вершин графа. Граф строится на основе матриц смежности и инцидентности (ориентированный и неориентированный). Матрицы заполняются через Randomize. Матрицы nxn. ПОМОГИТЕ, ПОЖАЛУЙСТА!!!
Ozzя
графы
И вообще поиск по ключевым словам
ориентированный (неориентированный) граф
матрица смежности и инцидентности
должен привести к успеху.
Guzel
Народ,пожалуйста,помогите!!! Там ничего такого нет! unsure.gif unsure.gif unsure.gif
мисс_граффити
что значит "построить красивый граф"?
чем красивый отличается от некрасивого?
volvo
Секунду, Guzel, "построить" - имеется в виду "нарисовать"?

Критерии есть? (в частности, пересечения дуг допустимы? Ограничения на N?)
Guzel
Цитата(мисс_граффити @ 1.12.2006 23:04) *

что значит "построить красивый граф"?
чем красивый отличается от некрасивого?



просто из одной вершины могут изходить несколько ребер, чтобы вдруг там не образовывались толстые линии(несколько ребер объединялись), чтобы граф был ну "красивый ",а не что-то непонятное и "некрасивое", ну нам объяснили, что условие там какое-то должно быть, вот...

Цитата(volvo @ 1.12.2006 23:28) *

Секунду, Guzel, "построить" - имеется в виду "нарисовать"?

Критерии есть? (в частности, пересечения дуг допустимы? Ограничения на N?)


Да,нарисовать.Ну, ограничений как таковых нет.Но можно и ввести, можно граф малых размерностей использовать, но не слишком конечно...В проге нужно выбрать пользователю: строить по матрице смежности или инцидентности, потом ,если инцидентности, то ориентированный или неориентированный-->вводится число вершин и ребер графа -->рисуется граф и наверху пишется матрица, по которой построился граф(матрица сама заполняется через Randomize).
Guzel
Ну...Ребят,помогите!!! unsure.gif
Guzel
Ну, что никто не может что ли!!!!????Ну очень надо!!!Пожалуйста!!! unsure.gif
мисс_граффити
нас когда учили писать ТЗ (на разработку сайта), сказали: "Слова "красивый", "привлекательный" и т.д. забудьте. Четко формулируйте требования".
Ты четко требования сформулировать не можешь...
Откуда я знаю твои вкусы? Что, по-твоему, красиво, а что нет.
Guzel
Цитата(мисс_граффити @ 3.12.2006 22:10) *

нас когда учили писать ТЗ (на разработку сайта), сказали: "Слова "красивый", "привлекательный" и т.д. забудьте. Четко формулируйте требования".
Ты четко требования сформулировать не можешь...
Откуда я знаю твои вкусы? Что, по-твоему, красиво, а что нет.



Я же все сформулировала...(чтобы 2,например, ребра графа не сливались в одно толстое ребро). Ну ладно, не надо мне "красивый" граф...просто граф...обычный...Только помогите,пожалуйста!!!А???
мисс_граффити
вершины кружочками рисовать умеешь?
то есть нарисовать n кружочков?... раскиданных по экрану.
Guzel
Цитата(мисс_граффити @ 4.12.2006 22:21) *

вершины кружочками рисовать умеешь?
то есть нарисовать n кружочков?... раскиданных по экрану.


ну...так смогу,но я такое еще не делала, n штук не смогу,наверное...А что?
мисс_граффити
ну... надо же с чего-то начинать рисовать граф smile.gif я думаю, правильнее с вершин, а потом уже соединять их дугами.
Guzel
Цитата(мисс_граффити @ 4.12.2006 23:28) *

ну... надо же с чего-то начинать рисовать граф smile.gif я думаю, правильнее с вершин, а потом уже соединять их дугами.



Ну,да,я понимаю.Но если времени нет...Если нас грузят...Еще 100-бальную систему ввели...Нигде не успеваю... unsure.gif unsure.gif
мисс_граффити
ты, конечно, извини, но, думаешь, других не грузят?
здесь все или учатся, или работают, или учатся+работают.
значит, кто-то должен тратить свое время, потому что тебе некогда (=лень) попробовать самой разобраться?
хочешь, чтобы помогли - пожалуйста. но ты сама тоже должна будешь что-то делать!
Guzel
Цитата(мисс_граффити @ 5.12.2006 0:24) *

ты, конечно, извини, но, думаешь, других не грузят?
здесь все или учатся, или работают, или учатся+работают.
значит, кто-то должен тратить свое время, потому что тебе некогда (=лень) попробовать самой разобраться?
хочешь, чтобы помогли - пожалуйста. но ты сама тоже должна будешь что-то делать!



я не против! yes2.gif я только за!
мисс_граффити
тогда вопрос о кружочках в силе.
Guzel
Цитата(мисс_граффити @ 5.12.2006 22:22) *

тогда вопрос о кружочках в силе.



ага! yes2.gif А кружочки в беспорядке,да размещать?

Да, ты так близко не воспринимай. Просто я сама не понимаю, когда учусь…У нас пары и утром и вечером ставят…дома, практически не бываю…
мисс_граффити
ну это как хочешь.
я думаю, лучше все же по какому-то закону, чтобы они друг на друга не налезали.
а чтобы совсем просто было потом работать и не хранить отдельно координаты (хотя, конечно, не проблема создать дополнительный массив) - задать закон зависимости координаты от номера вершины.

для начала можно просто выводить в 2 столбика.
для этого надо знать размеры экрана, в котором рисуем, и количество вершин.
по этим данным рассчитываем шаг, задаем центр первой окружности и начинаем рисовать...
Гость
Цитата(мисс_граффити @ 5.12.2006 22:49) *

ну это как хочешь.
я думаю, лучше все же по какому-то закону, чтобы они друг на друга не налезали.
а чтобы совсем просто было потом работать и не хранить отдельно координаты (хотя, конечно, не проблема создать дополнительный массив) - задать закон зависимости координаты от номера вершины.

для начала можно просто выводить в 2 столбика.
для этого надо знать размеры экрана, в котором рисуем, и количество вершин.
по этим данным рассчитываем шаг, задаем центр первой окружности и начинаем рисовать...


Подскажи,пожалуйста: какой закон нужно использовать, чтобы граф рисовался в 3-мерном пространстве(чтобы его ребра не сливались),например,если даны 3 вершины и 5 ребер-граф не был бы похож на треугольник с 2-мя толстыми сторонами,а была какая-нибудь геометрическая фигура?
мисс_граффити
что-то ничего особо разумного не придумывается, кроме того, что дуги рисовать не прямыми линиями, а округыми, если они кратные...
то есть первая - прямая, а дальше - закругленные с разным радиусом кривизны - отступом от прямой.
Гость
Цитата(мисс_граффити @ 6.12.2006 20:28) *

что-то ничего особо разумного не придумывается, кроме того, что дуги рисовать не прямыми линиями, а округыми, если они кратные...
то есть первая - прямая, а дальше - закругленные с разным радиусом кривизны - отступом от прямой.


Хорошо бы,если бы так прошло...но нет.Нам сказали,что так нельзя...(((( no1.gif

мисс_граффити
а как? я это визуально не представляю...
нарисуй, пожалуйста, и прикрепи изображение.
Guzel
Цитата(мисс_граффити @ 6.12.2006 21:03) *

а как? я это визуально не представляю...
нарисуй, пожалуйста, и прикрепи изображение.
Вот посмотри программку(ребра друг на друга лезут): как можно сделать что-то типа этого:

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...

Guzel
Цитата(Гость @ 6.12.2006 20:52) *

Хорошо бы,если бы так прошло...но нет.Нам сказали,что так нельзя...(((( no1.gif




Ну,что???Посмотрела? Там я вордовский файл закрепила!Внизу! unsure.gif unsure.gif
мисс_граффити
не очень поняла.
просто некоторые ребра рисуются ломаными?
Guzel
Цитата(мисс_граффити @ 8.12.2006 22:59) *

не очень поняла.
просто некоторые ребра рисуются ломаными?


нет.Просто они друг на друга лезут...так нельзя
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.