FORUMS.lenodal.com https://www.forums.lenodal.com/ |
|
L'algo c mal ! https://www.forums.lenodal.com/viewtopic.php?f=5&t=7007 |
Page 1 sur 1 |
Auteur: | L'algo c mal ! [ Lun 05 Déc 2005, 17:36 ] |
Sujet du message: | L'algo c mal ! |
voila j'ai un problème avec mon programme en pascal a rendre dans 5 minutes : program foretcouvrante; uses graph; const GMAX = 9; type graphe = array[1..GMAX,1..GMAX] of integer; matreal = array[1..GMAX,1..GMAX] of real; sommet = record nom:string[6]; arb:integer; racine:boolean; x,y:integer; end; couple = record x,y: integer; end; sommets =array[1..GMAX] of sommet; tabint = array[1..GMAX] of integer; var g:graphe; s:sommets; dv:tabint; pere:tabint; procedure nomme(var s:sommets); var i:integer;ang:real; begin for i:=1 to GMAX do with s[i] do begin nom:='S'+inttostr(i); arb:=0; racine:=false; ang:= 2*pi*i/GMAX; x:=320+ round(200*cos(ang)); y:=240+ round(200*sin(ang)); end; end; procedure remplis(var g:graphe); begin fillchar(g,sizeof(g),0); g[1,3]:=1;g[1,5]:=1;g[1,6]:=1;g[1,7]:=1; g[2,1]:=1; g[3,2]:=1;g[3,6]:=1; g[4,9]:=1; g[7,3]:=1;g[7,6]:=1; g[8,2]:=1;g[8,4]:=1;g[8,5]:=1; end; procedure affichesommets(var s:sommets); var i:integer; begin cleardevice; for i:=1 to GMAX do with s[i] do outtextxy(x,y,nom+'('+inttostr(dv[i])+')'); end; procedure affichearcs(var g:graphe); var i,j:integer;k:byte; begin for i:=1 to GMAX do for j:=1 to GMAX do begin k:=g[i,j]; if k<>0 then begin setcolor(16-k); moveto(s[i].x,s[i].y); lineto(s[j].x,s[j].y) end end end; function composante (x:integer):integer; begin result:=x; while pere[result]>0 do result:=pere[result]; end; procedure ajoutearete(x,y:integer); var cx,cy:integer; begin cx:=composante(x); cy:=composante(y); if cx<>cy then pere[cy]:=cx; end; procedure kruskal (g:graphe; cout:matreal; var T:graphe); var i,j:integer;var A:graphe; begin for i:=1 to GMAX do for j:=1 to GMAX do begin T[i,j]:=0; for i:=1 to GMAX do for j:=1 to GMAX do begin A[i,j]:=0; for i:=1 to GMAX do for j:=1 to GMAX do if g[i,j]<>0 then ajoutearete(i,j); for i:=1 to GMAX do pere[i]:=-1; i:=1; while i<GMAX do begin couple=choisir_min(A,cout); A:=A-[(x,y)]; cx:=composante(x); cy:=composante(y); if cx<>cy then begin reunir(cx,cy); T:=T+[(x,y)]; i:=i+1; end end end; function composante (x:integer):integer; var i : integer; begin result:=x; while pere[result]>0 do result:=pere[result]; end; begin nomme(s); remplis(g); parcourstotal; affichesommets(s); affichearcs(g); end. |
Auteur: | Nounours [ Lun 05 Déc 2005, 17:37 ] |
Sujet du message: | |
Tu travailles sous IPCute ? |
Auteur: | johnbob [ Lun 05 Déc 2005, 17:40 ] |
Sujet du message: | |
ouai et c'est génial comme programme |
Auteur: | Stranger [ Lun 05 Déc 2005, 18:28 ] |
Sujet du message: | |
Encore un malade qui parle à lui même... ![]() |
Page 1 sur 1 | Le fuseau horaire est UTC+1 heure |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |