Un programme en turbo pascal

Fermé
lolita24 Messages postés 8 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 31 mai 2011 - 3 mai 2009 à 19:47
Ki!l Messages postés 94 Date d'inscription vendredi 1 mai 2009 Statut Membre Dernière intervention 4 mars 2011 - 3 mai 2009 à 20:29
Bonjour,
Slt je ss une étudiante en 1ére an et je sais pas comment faire pour resoudre ce programme en pascal,en utilisant une matrice de 100 cases donc il existe 10 villes ,les types enregistrements ,procedure et fonction et pourquoi pas les pilles, voici le:
Soit un graphe representant les differentes villes d'un pays .Ecrire un programme qui gère les differents voyages en repondant aux questions du genre:
-l'éxistance d'un chemin entre deux villes.
-la distance à parcourir ente deux villes en precisant les differentes distances.
-le chemin le plus court entre deux villes.
et ce programme doit fonctionne pour n'importe quel graphe donné donc il est général
(l'existance d'un chemin doit se representer par( soit true =il existe un chemin,soit false=il n'existe pas un chemin) la diagonale doit etre rempli par false.
Merci
A voir également:

1 réponse

Ki!l Messages postés 94 Date d'inscription vendredi 1 mai 2009 Statut Membre Dernière intervention 4 mars 2011 36
3 mai 2009 à 20:29
voici un prog que je l'ai pas encore testé
program voyageur;
uses Wincrt;
type mat = array[1..20,1..20] of integer;
vect1 = array[1..20] of string;
vect2 = array[1..20] of boolean;

var dist : mat;
ville : vect1;
vv : vect2;
vd : string;
i,j,n,dp,vc,vi,vs,dmin : integer;


begin
{Entrer le nombre de villes à visiter }
write('Entrer le nombre de villes à visiter: ');
readln(n);
writeln;

{Entrer les noms des villes et Initialiser le vecteur des villes visitées à False}
writeln('Entrer les noms des villes à visiter');writeln;
for i:= 1 to n do
begin
readln(ville[i]);
vv[i]:=false;
end;

writeln;
{Entrer le nom de la ville de départ}
write('Entrer le nom de la ville de départ: ');
readln(vd);

writeln;
{Entrer les distances entre les villes }
writeln('Entrer les distances entres les villes');
writeln;
for i:= 1 to n do
for j:=1 to i do
if i=j then dist[i,j]:=0
else
begin
write('Entre ',ville[i],' et ',ville[j], ': ');
readln(dist[i,j]);
dist[j,i]:=dist[i,j];
end;

{Marquer le ville de départ comme ville visitée}
vc:=1;
while ville[vc]<>vd do vc:=vc+1;
vv[vc]:=true;
vi:=vc;

{Initialiser la distance parcourue à zéro}
dp:=0;


clrscr;
writeln('Ville de départ : ',vd);
writeln;writeln;
writeln('L''iténéraire suivi par le voyageur est le suivant : ');
writeln;


write(' ',vd,' ');
{Recherche de la ville suivante "vs" la plus proche et calcul de la distance parcourue}
for i:=1 to n-1 do
begin
dmin:=10000;
for j:=1 to n do
if (dist[vc,j]<dmin) and (vv[j]=false) then
begin
dmin := dist[vc,j];
vs:=j;
end;
dp:=dp+dist[vc,vs];
write(ville[vs],' ');
vv[vs]:=true;
vc:=vs;
end;
dp:=dp+dist[vi,vs];
write(vd);
writeln;writeln;
write('La distance totale parcourue est de : ',dp,' Km.');
end.
{k_il90@hotmail.com}
1