lexique math.

L'espace pour les discussions de comptoir

lexique math.

Message non lude caco74 » Mer 14 Mar 2012 12:07

je fait encore joujou avec mon module GPS trimble copernicus et mon arduino deuligne.

Je souhaite convertir les données angulaires en données sexagésimes.
Je m explique. j'affiche les données dans le format 121.135°

pour convertir il faut prendre dans un premier temps la partie entiere : 121 ==> 121 degres
apres la partie decimale 0.135 * 60 = 8(.1) ==> 8 minutes
et le reste 0.1 * 60 = 6 ==> 6 secondes.

je ne trouve pas la bonne syntaxe et le bon lexique afin de garder la partie entière et la partie decimale.

Merci.
caco74
 
Messages: 59
Inscription: Sam 7 Mai 2011 19:09

Re: lexique math.

Message non lude Stéphane » Mer 14 Mar 2012 12:30

Bonjour,

Dans les fonctions arithmétiques standard du C, relatives à la division, on trouve :

- "/" Symbole division. Renvoie la partie entière de la division effectuée. Ex : "data=15/2; " "data" sera égal à 7.
- "%" Symbole modulo. Renvoie le reste de la "division" effectuée. Ex : "data=15%2; " "data" sera égal à 1, car 15 divisé par deux = 7 et il reste 1.


Si par contre, votre question traite de savoir comment séparer la partie entière et la partie après la virgule, il y a plusieurs solutions à ceci. Cela va dépendre de la manière dont vous récupérez votre nombre initial. Est-ce dans une variable ? Une chaine de caractère ?

En espérant avoir répondu à votre question,

Bonne journée :)
Avatar de l’utilisateur
Stéphane
 
Messages: 179
Inscription: Lun 2 Mai 2011 09:40

Re: lexique math.

Message non lude caco74 » Mer 14 Mar 2012 12:40

en fait il est extrait d'une trame de caractere d'apres la librairie tinygps.
Code: Tout sélectionner
 gps.f_get_position(&latitude, &longitude);

il est stocké dans une variable longitude et latitude sous la forme 121.135
ce sont donc des degres.
et je veux donc des degres minutes secondes.Il me faut extraire la prtie entiere et la partie decimale.
caco74
 
Messages: 59
Inscription: Sam 7 Mai 2011 19:09

Re: lexique math.

Message non lude Stéphane » Mer 14 Mar 2012 16:23

Le plus simple:
- si tu ne connais pas le nombre de chiffres après la virgule (si il est variable), tu transfere ta valeur dans une variable entière.
En effet, si ton nombre de type "float" égale 121,135, si tu le met dans une variable type "int" ta variable sera égale à 121.
Ensuite, tu fais le modulo de ton nombre original par la variable contenant la partie entière, ce qui te donnera la partie décimale de ton nombre initial.

- si tu connais le nombre de chiffres dans la partie décimale et qu'il est fixe (ex n), tu le multiplies par 10exp(n), tu obtiendras ensuite un nombre égal à 121135 si n = 3 et que ton nombre initial était de 121,135. A partir de là, il est aisé de séparer la partie entière originelle de la partie décimale originelle.

Voilà :)
Avatar de l’utilisateur
Stéphane
 
Messages: 179
Inscription: Lun 2 Mai 2011 09:40

Re: lexique math.

Message non lude caco74 » Mer 14 Mar 2012 20:31

Merci du coup de main j'ai réussi mon petit programme avec les conversions qui vont biens.
Je monterai un petit tuto pour aider.
caco74
 
Messages: 59
Inscription: Sam 7 Mai 2011 19:09


Retourner vers Le comptoir

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités