Projet

Général

Profil

« Précédent | Suivant » 

Révision 396

Ajouté par Mafall FALL il y a presque 3 ans

Conversion latitude marche bien

Voir les différences:

main.c
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <math.h>
#include <strings.h>
#include "trame.h"
......
int decode_int(char c) // declaration de la fonction qui renvoie le nombre associ? au caractere
{
int i=0;
i=c-'0';
i=c-'0'; // calcule du nombre
return i;
}
......
int decode_nombre(char * ch, int n) // fonction qui recupere les n premiers chiffres d'une chaine
{
int i; // pour parcourir les caract?res
int somme=0 ;// contienchar* chainet le nombre d?cod?
int somme=0 ;// contien char* chain et le nombre d?cod?
for (i=0;i<n;i++)
{
somme=(somme*10) + decode_int(ch[i]);
......
}
float convert_latitude( char chaine[] )
float convers_latitude( char *lat )/* fonction qui convertie une longitude en nombre flottant */
{
int i=0,vir=0;
float lat=0;
for (i=0; i!='\n';i++){
if (chaine[i]==',')
{
vir+=1;
}
if (vir==2){
/*3723.2475,N signifie 37?23,2475' de
latitude Nord (c.-?-d. 37? et 23,2475 minutes or il ya 60 minutes dans 1?), ou
encore +37,387458?), en d?cimal*/
float res_convers=0; // variable contenant le resultat de la conversion
int i;
float val_sexa= decode_nombre(lat,4);// on d?code les 4 premiers caract?res en chiffres
for (i=5;i<9;i++)
{
val_sexa+= (decode_int(lat[i]))*pow(10,-i+4);// d?codage de la partie d?cimale
}
res_convers=(int)(val_sexa/100);// on recueille les degr?s (exemple 37)
res_convers= res_convers + (val_sexa - res_convers*100)/60;// conversion des minutes en degr? et ajout ? la somme
return res_convers;
lat=decode_nombre(chaine[],2);
}
}
}
float convert_longitude( )
......
//Ajouter vos tests unitaires dans cette fonction.
void tests_unitaires(void){
if (convers_latitude("3723.2475,N") - 37.387459 > 0.0001 )
{
printf("Erreur test latitude !!! \n");
exit(-1);
}
if ( decode_nombre("3103", 2)!= 31){
printf("Erreur Test unitaire decode_nombre.\n");
exit(-1);

Formats disponibles : Unified diff