Projet

Général

Profil

« Précédent | Suivant » 

Révision 224

Ajouté par gasacco il y a presque 4 ans

Amélioration des fonctions de conversions et fonction decode_trame fonctionnelle

Voir les différences:

branch/sacco/sp4a12/main.c
0};
float a =10;
float b = (float) 1;
float c = (float) 1/6;
float d = (float) 1/60;
float e = (float) 1/600;
float f = (float) 1/6000;
float g = (float) 1/60000;
float h = (float) 1/600000;
typedef struct
{
float latitude;
......
{
return ValDecimale;
}
}
}
int trame_cmp(char* a,char* b){
int i =0;
......
}
float conversion_Latitude_sexa_dec(char *coord)
float conversion_Lat_sexa_dec(char coord[])
{
int Part_Ent_Sexa = decode_nombre(coord, 4);
int Degre_Dec = decode_nombre(coord, 2);
int Reste_Sexa = Part_Ent_Sexa%100;
int Dec_Coord_Sexa = 0;
for (int i=5;i<9;i++)
float Coeff_Ent[5] = {a,b,c,d};
float Coeff_Dec[4] = {e,f,g,h};
int i =0;
int k =0;
float nb_Convert=0;
int elem;
for (i=0; i< 9;i++)
{
Dec_Coord_Sexa =Dec_Coord_Sexa*10+decode_int(coord[i]);
if (i <= 3)
{
elem = decode_int(coord[i]);
nb_Convert = nb_Convert + (float) elem * Coeff_Ent[i];
}
else if (i>=5)
{
elem = decode_int(coord[i]);
nb_Convert = nb_Convert + (float) elem * Coeff_Dec[k];
k++;
}
}
float Coord_Dec = (float) Degre_Dec+(float) (Reste_Sexa*10000+Dec_Coord_Sexa)/600000;
return Coord_Dec;
return nb_Convert;
}
float conversion_Long_sexa_dec(char * coord)
float conversion_Long_sexa_dec(char coord[])
{
int Part_Ent_Sexa = decode_nombre(coord, 5);
int Degre_Dec = decode_nombre(coord, 3);
int Reste_Sexa = Part_Ent_Sexa%100;
int Dec_Coord_Sexa = 0;
for (int i = 6; i<10; i++)
float Coeff_Ent[5] = {0,a,b,c,d};
float Coeff_Dec[4] = {e,f,g,h};
int i =0;
int k =0;
float nb_Convert=0;
int elem;
for (i=0; i< 10;i++)
{
Dec_Coord_Sexa = Dec_Coord_Sexa*10 + decode_int(coord[i]);
if (i <= 4)
{
elem = decode_int(coord[i]);
nb_Convert = nb_Convert + (float) elem * Coeff_Ent[i];
}
else if (i>=6)
{
elem = decode_int(coord[i]);
nb_Convert = nb_Convert + (float) elem * Coeff_Dec[k];
k++;
}
}
return nb_Convert;
float Coord_Dec = (float) Degre_Dec + (float) Reste_Sexa/60 + (float) Dec_Coord_Sexa/600000;
return Coord_Dec;
}
float conversion(char * coord)
......
}
if (i==4)
{
P.latitude = conversion_Latitude_sexa_dec(coord);
P.latitude = conversion_Lat_sexa_dec(coord);
return P.latitude;
}
else if (i==5)
......
}
p->latitude = conversion(Lat);
p->longitude = conversion(Long);
return 1;
}
else
{
return -1;
return 0;
}
}
//Ajouter vos tests unitaires dans cette fonction.
void tests_unitaires(void){
......
printf ("Erreur Test unitaire trame_cmp.\n");
exit(-1);
}
if (conversion_Latitude_sexa_dec("3723.2475")-(float) 37.387458>0.0001){
if (conversion_Lat_sexa_dec("3723.2475")-(float) 37.387458>0.0001){
printf("Erreur Test unitaire conversion_Latitude_sex_dec 1.\n");
exit(-1);
}
if (conversion_Latitude_sexa_dec("0045.0000")-(float) 0.75>0.0001){
if (conversion_Lat_sexa_dec("0045.0000")-(float) 0.75>0.0001){
printf("Erreur Test unitaire conversion_Latitude_sexa_dec.\n");
exit(-1);
}
......
if (conversion_Long_sexa_dec("00008.0015")-(float)0.133358>0.0001){
printf("Erreur Test unitaire conversion_Latitude_sexa_dec.\n");
exit(-1);
}
if (conversion("3723.2475")-(float)37.387458>0.0001){
printf("Erreur Test unitaire conversion.\n");
......
// Ne pas modifier cette fonction
int main(int argc,char ** argv)
{
{
tests_unitaires();
test_decode_int();

Formats disponibles : Unified diff