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

cs_lidia22 37 Messages postés dimanche 28 septembre 2008Date d'inscription 10 mai 2010 Dernière intervention - 2 avril 2009 à 12:37 - Dernière réponse : cs_lidia22 37 Messages postés dimanche 28 septembre 2008Date d'inscription 10 mai 2010 Dernière intervention
- 3 avril 2009 à 14:44
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
Afficher la suite 

Votre réponse

7 réponses

Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 2 avril 2009 à 18:53
+3
Utile
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 !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Bacterius
Guillemouze 1015 Messages postés samedi 25 octobre 2003Date d'inscription 29 août 2013 Dernière intervention - 2 avril 2009 à 14:02
0
Utile
m1 :=  0.135*60;
m2 := trunc(m1); //=8
s1 := (m1 - m2) * 60;
s2 := trunc(s1); //=6
Commenter la réponse de Guillemouze
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 2 avril 2009 à 19:31
0
Utile
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;

Commenter la réponse de f0xi
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 2 avril 2009 à 19:55
0
Utile
Oui voilà ^^
Je suppose que Int est plus rapide que Trunc non ?

Cordialement, Bacterius !
Commenter la réponse de Bacterius
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 3 avril 2009 à 02:13
0
Utile
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.

Commenter la réponse de f0xi
cs_lidia22 37 Messages postés dimanche 28 septembre 2008Date d'inscription 10 mai 2010 Dernière intervention - 3 avril 2009 à 14:42
0
Utile
merciiiiiiiiiiiiii je sais pas quoi vous dir merci beaucoup pour votre aide

amani
Commenter la réponse de cs_lidia22
cs_lidia22 37 Messages postés dimanche 28 septembre 2008Date d'inscription 10 mai 2010 Dernière intervention - 3 avril 2009 à 14:44
0
Utile
merci également a vous 

amani
Commenter la réponse de cs_lidia22

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.