let tipe()=
let x=ref `0` and carte1= [859 , 550;
897 , 526;873 , 470;941 , 455;971 , 436;1006 , 434;1027 , 387;1077 , 344;
1076 , 254;962 , 274;1019 , 323;978 , 358;938 , 322;870 , 318;890 , 353;895 , 281;
845 , 294;822 , 221;790 , 265;689 , 273;777 , 172;675 , 181;644 , 183;652 , 211;
690 , 208;702 , 185;729 , 189;759 , 208;790 , 202;795 , 174;959 , 159;989 , 192;
954 , 201;936 , 243;903 , 232;923 , 211;923 , 174;876 , 180;880 , 203;978 , 222;
1057 , 219;1096 , 163;1117 , 174;1147 , 189;1160 , 238;1134 , 250;1104 , 225;1092 , 210;
1069 , 256;1105 , 276;1148 , 481;1164 , 465;1137 , 437;1113 , 461;1095 , 406;1152 , 399;1120 , 361;
1064 , 395;1066 , 442;1106 , 485;1062 , 590;1005 , 682;1047 , 655;1070 , 627;1013 , 605;
962 , 621;969 , 649;1006 , 626;976 , 567;1025 , 541;945 , 412;883 , 398;840 , 361;
811 , 334;748 , 303;696 , 305;646 , 310;610 , 318;585 , 371;579 , 404;560 , 468;
564 , 517;626 , 544;652 , 566;713 , 557;755 , 535;806 , 494;785 , 443;746 , 397;686 , 373;
664 , 427;701 , 457;661 , 489;699 , 420;735 , 444;813 , 414;746 , 365;621 , 397;620 , 475;698 , 506]
in
let carte=ref carte1 in
begin
open_graph"";
set_color blue;
affichage();
afficher_villes( !carte );
while !x<>`7` do
let etat= wait_next_event[Key_pressed] in
begin
x:=(etat.key); if !x=`0` then affichage();
if !x=`1` then carte:=nouvelle_carte();
if !x=`2` then begin
clear_graph();
affichage();
afficher_villes( !carte );
end;
if !x=`3` then if !carte=[] then
begin
clear_graph();
afficher_villes( !carte );
fill_rect 10 20 350 215 ;
moveto 20 195 ;
draw_string " Algorithme Naif ";
moveto 20 140 ;
draw_string "Erreur il faut créer une carte d'abord!!!";
moveto 20 120 ;
draw_string "Pour retourner au menu appuyer sur <0>";
end
else
begin
clear_graph();
afficher_villes( !carte );
moveto (fst (hd !carte)) (snd (hd !carte)) ;
let solution=resolution_naive (reel_of_entier !carte ) in
begin
tracer_parcours ( entier_of_reel ( solution ) );
let d=(calcul_distance_total solution )in
begin
fill_rect 10 20 350 215 ;
moveto 20 195 ;
draw_string " Algorithme Naif ";
moveto 20 140 ;
draw_string "Distance total=";
moveto 20 120 ;
draw_string (string_of_float d);
moveto 20 80 ;
draw_string "Pour retourner au menu appuyer sur <0>";
end;
end;
end;
end;
if !x=`4` then if !carte=[] then
begin
fill_rect 10 20 350 215 ;
moveto 20 195 ;
draw_string " Algorithme Glouton ";
moveto 20 140 ;
draw_string "Erreur il faut créer une carte d'abord!!!";
moveto 20 120 ;
draw_string "Pour retourner au menu appuyer sur <0>";
end
else
begin
let sol=glouton (reel_of_entier !carte ) in
let v= hd sol in
let solution = insert_fin sol v in
begin
clear_graph();
afficher_villes( !carte );
tracer_parcours (entier_of_reel solution);
let d=(calcul_distance_total solution ) in
begin
fill_rect 10 20 350 215 ;
moveto 20 195 ;
draw_string " Algorithme Glouton ";
moveto 20 140 ;
draw_string "Distance total=";
moveto 20 120 ;
draw_string (string_of_float d);
moveto 20 80 ;
draw_string "Pour retourner au menu appuyer sur <0>";
end;
end;
end;
if !x=`5` then if !carte=[] then
begin
fill_rect 10 20 350 215 ;
moveto 20 195 ;
draw_string " Algorithme des ACM ";
moveto 20 140 ;
draw_string "Erreur il faut créer une carte d'abord!!!";
moveto 20 120 ;
draw_string "Pour retourner au menu appuyer sur <0>";
end
else
begin
let sol=méthode_des_acm (reel_of_entier !carte ) in
let solution = insert_fin sol (hd sol) in
begin
clear_graph();
afficher_villes( !carte );
tracer_parcours (entier_of_reel solution);
let d=(calcul_distance_total solution ) in
begin
fill_rect 10 20 350 215 ;
moveto 20 195 ;
draw_string " Algorithme des ACM ";
moveto 20 140 ;
draw_string "Distance total=";
moveto 20 120 ;
draw_string (string_of_float d);
moveto 20 80 ;
draw_string "Pour retourner au menu appuyer sur <0>";
end;
end;
end;
if !x=`6` then if !carte=[] then
begin
fill_rect 10 20 350 215 ;
moveto 20 195 ;
draw_string " Algorithme des Fourmis ";
moveto 20 140 ;
draw_string "Erreur il faut créer une carte d'abord!!!";
moveto 20 120 ;
draw_string "Pour retourner au menu appuyer sur <0>";
end
else
begin
let solution=fourmi (reel_of_entier !carte ) in
begin
clear_graph();
afficher_villes( !carte );
tracer_parcours ( insert_fin (entier_of_reel solution) (hd !carte));
let d=(calcul_distance_total solution ) in
begin
fill_rect 10 20 350 215 ;
moveto 20 195 ;
draw_string " Algorithme des Fourmis ";
moveto 20 140 ;
draw_string "Distance total=";
moveto 20 120 ;
draw_string (string_of_float d);
moveto 20 80 ;
draw_string "Pour retourner au menu appuyer sur <0>";
end;
end;
end;
done;
close_graph () ;
end;;
Partager