Algorithme de conversion des degrés décimaux en degrés sexagésimaux [Résolu]

Signaler
Messages postés
37
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
10 mai 2010
-
cs_lidia22
Messages postés
37
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
10 mai 2010
-
salut a tous;

je voulais consernant  Comment faire pour convertir des degrés décimaux en degrés
sexagésimaux en langage DELPHI?

exemple:

latitude = 121,135° je sais que pour convertir il faut faire comme suite:





Le nombre avant la virgule indique les degrés => 121°




Multiplier le nombre après la virgule par 60 => 0,135 * 60 = 8,1




Le nombre avant la virgule devient la minute (8')




Multiplier le nombre après la virgule par 60 => 0,1 * 60 = 6




Le résultat correspond aux secondes (6").




Notre longitude sera de 121° 8' 6"  (
degrés sexagésimaux (degrés-minutes-secondes)

mais je sais pas comment faire ça en langage DELPHI alors SVP aidé moi









amani

7 réponses

Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
6
function DecToSexa(Dec: Double; var Deg: Longword; var Min: Double; var Sec: Double): String;
begin
Deg := Trunc(Dec);
Min := (Dec - Trunc(Dec)) * 60;
Sec := Trunc((Min - Trunc(Min)) * 60);
Min := Trunc(Min);
Result := Format('%d° %f'' %f"', [Deg, Min, Sec]);
end;

Cette fonction prend en paramètre la latitude dans Dec, et renvoie les degrés, minutes et secondes dans Deg, Min et Sec. En bonus, elle renvoie la chaîne formatée {Degrés° Minutes' Secondes"} en résultat.

Cordialement, Bacterius !
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
5
m1 :=  0.135*60;
m2 := trunc(m1); //=8
s1 := (m1 - m2) * 60;
s2 := trunc(s1); //=6
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
27
correction :

function DegDToDegS(const L: extended; var D,M,S: extended): string;
var
  fE : extended;
begin
  D := int(L);
  fE := (L - D) * 60;
  M := int(fE);
  fE := (fE - M) * 60;
  S := int(fE);
  result := format('%.0f° %.0f'' %.0f"',[D,M,S]);
end;

Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
6
Oui voilà ^^
Je suppose que Int est plus rapide que Trunc non ?

Cordialement, Bacterius !
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
27
Int recupere la partie entiere d'un flottant.
Trunc, tronque le flottant et renvois la partie entiere ...

c'est a peu prés pareil ... mais Int se prete plus pour cette utilisation dans ce cas.

Messages postés
37
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
10 mai 2010

merciiiiiiiiiiiiii je sais pas quoi vous dir merci beaucoup pour votre aide

amani
Messages postés
37
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
10 mai 2010

merci également a vous 

amani