Le fuseau horaire est UTC+1 heure




Publier un nouveau sujet Ce sujet est verrouillé, vous ne pouvez rien publier ou éditer.  [ 4 message(s) ] 
Auteur Message
Message Sujet du message: L'algo c mal !
Publié: Lun 05 Déc 2005, 17:36 
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.


Haut
  
 
Message Sujet du message:
Publié: Lun 05 Déc 2005, 17:37 
Tu travailles sous IPCute ?


Haut
  
 
Message Sujet du message:
Publié: Lun 05 Déc 2005, 17:40 
ouai et c'est génial comme programme


Haut
  
 
Message Sujet du message:
Publié: Lun 05 Déc 2005, 18:28 
Inscrit sur les forums

Inscription : Mer 18 Sep 2002, 17:17
Message(s) : 11213
Localisation : Fontenay sous Bois (94)
Encore un malade qui parle à lui même... :?

_________________
Julien "Stranger"


Haut
Hors-ligne Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Ce sujet est verrouillé, vous ne pouvez rien publier ou éditer.  [ 4 message(s) ] 

Le fuseau horaire est UTC+1 heure


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 14 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  

Nous sommes actuellement le Jeu 08 Mai 2025, 1:07
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group