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

Messages postés
37
Date d'inscription
dimanche 28 septembre 2008
Dernière intervention
10 mai 2010
- - Dernière réponse : cs_lidia22
Messages postés
37
Date d'inscription
dimanche 28 septembre 2008
Dernière intervention
10 mai 2010
- 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

Meilleure réponse
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
7
3
Merci
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 !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 117 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Bacterius
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
6
0
Merci
m1 :=  0.135*60;
m2 := trunc(m1); //=8
s1 := (m1 - m2) * 60;
s2 := trunc(s1); //=6
Commenter la réponse de Guillemouze
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
2 janvier 2019
33
0
Merci
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
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
7
0
Merci
Oui voilà ^^
Je suppose que Int est plus rapide que Trunc non ?

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
2 janvier 2019
33
0
Merci
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
Messages postés
37
Date d'inscription
dimanche 28 septembre 2008
Dernière intervention
10 mai 2010
0
Merci
merciiiiiiiiiiiiii je sais pas quoi vous dir merci beaucoup pour votre aide

amani
Commenter la réponse de cs_lidia22
Messages postés
37
Date d'inscription
dimanche 28 septembre 2008
Dernière intervention
10 mai 2010
0
Merci
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.