Projet

Général

Profil

« Précédent | Suivant » 

Révision 369

Ajouté par anclaud il y a presque 4 ans

Fonctions de conversion longitude et latitude OK

Voir les différences:

main.c
int i, res = 0;
for (i=0;i<n;i++)
{
res = res + pow(10,n-i-1)*decode_int(ch[i]);
res = res*10 + decode_int(ch[i]);
}
return res;
}
......
// Fonction latitude : (format ddmm.mmmm)
float conv_latitude(char lat_sexa)
float conv_latitude(char* lat_sexa)
{
float lat_dec=0;
int degres_lat = 0;
float minute_lat = 0;
int i;
degres_lat = decode_nombre(lat_sexa,2);
printf("%d \n", degres_lat);
minute_lat = (lat_sexa-degres_lat*100)/60;
printf("%f \n", minute_lat);
lat_dec = degres_lat + minute_lat;
degres_lat = decode_nombre(lat_sexa,4);
for (i=5;i<9;i++)
{
degres_lat += (decode_int(lat_sexa[i]))*pow(10,-i+4);
}
lat_dec = (int) (degres_lat/100);
lat_dec += (degres_lat-lat_dec*100)/60;
return lat_dec;
}
// Fonction longitude : (format dddmm.mmmm)
float conv_longitude (char lat_sexa)
float conv_longitude (char* long_sexa)
{
float long_dec=0;
int degres_long = 0;
int i;
degres_long = decode_nombre(long_sexa,5);
for (i=6;i<10;i++)
{
degres_long += (decode_int(long_sexa[i]))*pow(10,-i+5);
}
long_dec = (int) (degres_long/100);
long_dec += (degres_long-long_dec*100)/60;
return long_dec;
}
// Fonction test unitaire latitude
void test_conv_latitude(void)
{
......
printf("%d \n", res_lat);
}
float Conversion_gen (char * chaine){ //Cette fonction convertie soit une latitude soit une longitude en degr?.
int cpt = 0;
while (chaine[cpt]!='\0'){
cpt++;
}
if (cpt == 9){
return conv_latitude(chaine);
}
else if(cpt==10){
return conv_longitude(chaine);
}
else{
return 1000.0;
}
}
// Ne pas modifier cette fonction
int main(int argc,char ** argv)
......
traitement(trame);
return 0;
}
}
/*
float decode_nombre (char * trame) {
int i=0;
int j=0,memoire=0;
long res3=0;
char tab[9];
long res4=0;
while (i<10)
{
if (decode_int(trame[i])!=(-1))
{
tab [j]=decode_int(trame[i]);
res3 = res310+tab[j];
memoire++;
}
i++;
j++;
}
/ while (i<12)
{
if (decode_int(trame[i]=='S'))
{
res4 = res3 - (2*res3);
printf("%d\n",res4);
}
else
{
res4 = res3;
}
i++;
} /
switch(trame[memoire+2])
{
case 'S' :
res3 = res3(-1);
break;
case 'W' :
res3 = res3(-1);
break;
}
return res3;
}
float Conversion_sexagesimale(long nb_sexa)
{
float result=0, result_min=0;
int degres=0;
degres=nb_sexa/1000000;
result_min=(nb_sexa-(degres1000000));
result_min=(reste/10000);
result=(degres+(reste/60));
return result;
}
*/

Formats disponibles : Unified diff