{ Manipulations sur une classe } { coordonnees GPS } { Type agrege de stockage des informations } { relatives a une localisation codee } { sous la forme degres, minutes, secondes } structure localisation entier d <- 0 entier mn <- 0 reel s <- 0.0 fin structure { Type agrege de stockage des informations } { relatives a une localisation GPS } structure localisationGPS localisation lon localisation lat fin structure { Programme principal } action principale() constante reel PI <- 3.14159 localisationGPS l1 localisationGPS l2 reel lo1 reel lo2 reel la1 reel la2 reel dlo reel dla reel a reel distance { Lecture clavier des 2 coordonnees GPS } afficherln("SVP, P1?") afficherln("Longitude :") l1.lon.d <- saisir() l1.lon.mn <- saisir() l1.lon.s <- saisir() afficherln("Latitude :") l1.lat.d <- saisir() l1.lat.mn <- saisir() l1.lat.s <- saisir() afficherln("SVP, P2?") afficherln("Longitude :") l2.lon.d <- saisir() l2.lon.mn <- saisir() l2.lon.s <- saisir() afficherln("Latitude :") l2.lat.d <- saisir() l2.lat.mn <- saisir() l2.lat.s <- saisir() { Conversion en valeurs reelles } { des longitudes et latitudes } lo1 <- l1.lon.d+((l1.lon.s/60.0)+l1.lon.mn)/60.0 lo2 <- l2.lon.d+((l2.lon.s/60.0)+l2.lon.mn)/60.0 la1 <- l1.lat.d+((l1.lat.s/60.0)+l1.lat.mn)/60.0 la2 <- l2.lat.d+((l2.lat.s/60.0)+l2.lat.mn)/60.0 { Conversion en radians des valeurs } { en degres } lo1 <- lo1*PI/180.0 lo2 <- lo2*PI/180.0 la1 <- la1*PI/180.0 la2 <- la2*PI/180.0 { Calcul de la distance en kilometres } dlo <- (lo2-lo1)/2.0 dla <- (la2-la1)/2.0 a <- (sin(dla)*sin(dla))+cos(la1)*cos(la2)*(sin(dlo)*sin(dlo)) distance <- 2.0 * atan2(sqrt(a),sqrt(1.0-a)) * 6378.137 { Affichage final } afficherln("Distance : ",distance," km") fin action