Index: branch/Morales/sp4a12/main.c
===================================================================
--- branch/Morales/sp4a12/main.c	(revision 196)
+++ branch/Morales/sp4a12/main.c	(revision 197)
@@ -60,22 +60,17 @@
 return nbr_return;
 }
 
-//fonction covertissant des sexagesimal en reel
+//fonction covertissant des sexagesimal (latitude ou longitude) en reel
 float sexagesimal_to_float(float lat)
 {
-int dec_val=lat;
-int i=0;
+int float_deg=lat/100;
+float float_minutes=0;
+float value = 0;
 
-    while (dec_val>360)
-    {
-        dec_val=dec_val/10;
-        i=i+1;
-    }
-float float_val;
-    float_val = (lat-dec_val*pow(10,i))/60;
-printf("%f",dec_val+float_val);
+    float_minutes = (lat-float_deg*100)/60;
+    value = float_deg + float_minutes;
 
-return dec_val+float_val;
+return value;
 }
 
 //fonction convertissant la chaîne de caractère contenant la latitude en nombre flottant
@@ -83,12 +78,14 @@
 {
 int i=0;
 int j=0;
+int val_entiere_taille = 0;
+int val_decimale_taille = 0;
 int nbr_virgule=0;
 float lat=0;
-char val[4];
-char val_decimal[4];
+char val_entiere[6];
+char val_decimal[6];
 
-        while (nbr_virgule<2)       // on compte jusquà la deuxième virgule
+        while (nbr_virgule<2)       // on compte jusquà la deuxième virgule (3ème champs)
         {
            if (trame[i]==',')
            {
@@ -96,20 +93,31 @@
            }
            i++;
         }
-        for (j=0;j<4;j++)
+       // on ne peux pas passer directement d'un caractère avec des virgule à un flottant, du coup on passe par deux chaîne de caractères
+       // intermediares pour avoir ce qui correspond à la partie entière et ce qui correspond à la partie decimale
+
+        while (trame[i]!='.')
         {
-            val[j]=trame[i];            // stock ce qui est supérieur à 1
+            val_entiere[j]=trame[i];
+            j++;           // stock la partie entiere
             i++;
         }
-        i++;
-        for (j=0;j<4;j++)
+        val_entiere_taille = j;
+        j=0;
+        i++; // on ne stock pas le point dans les chaines
+        while (trame[i]!=',')
         {
-            val_decimal[j]=trame[i];            // stock ce qui est supérieur à 1
+            val_decimal[j]=trame[i];            // stock la partie decimale
+            j++;
             i++;
         }
+        val_decimale_taille = j;
 
-        lat = decode_nombre(val,4) + 0.0001* decode_nombre(val_decimal,4); //on stock la valeur de la latitude
-        lat = sexagesimal_to_float(lat);
+
+
+        lat = decode_nombre(val_entiere,val_entiere_taille) + 0.0001* decode_nombre(val_decimal,val_decimale_taille); //on stock la valeur de la latitude
+
+        lat = sexagesimal_to_float(lat);      // transformation en flottant
 return lat;
 }
 
@@ -118,12 +126,14 @@
 {
 int i=0;
 int j=0;
+int val_entiere_taille = 0; // taille de la partie entiere de la longitude
+int val_decimale_taille = 0;    // taille de la partie décimal de la longitude
 int nbr_virgule=0;
 float longitude=0;
-char val[4];
-char val_decimal[4];
+char val_entiere[6];    //valeur entiere de la longitude, on reserve 6 cases par sécurité.
+char val_decimal[6];
 
-        while (nbr_virgule<4)       // on compte jusquà la deuxième virgule
+        while (nbr_virgule<4)       // on compte jusquà la quatrième virgule (5ème champs)
         {
            if (trame[i]==',')
            {
@@ -131,19 +141,27 @@
            }
            i++;
         }
-        for (j=0;j<5;j++)
+        // on ne peux pas passer directement d'un caractère avec des virgule à un flottant, du coup on passe par deux chaîne de caractères
+       // intermediares pour avoir ce qui correspond à la partie entière et ce qui correspond à la partie decimale
+
+        while (trame[i]!='.')
         {
-            val[j]=trame[i];            // stock ce qui est supérieur à 1
+            val_entiere[j]=trame[i];
+            j++;           // stock la partie entiere
             i++;
         }
-        i++;
-        for (j=0;j<4;j++)
+        val_entiere_taille = j;
+        j=0;
+        i++; // on ne stock pas le point dans les chaines
+        while (trame[i]!=',')
         {
-            val_decimal[j]=trame[i];            // stock ce qui est supérieur à 1
+            val_decimal[j]=trame[i];            // stock la partie decimale
+            j++;
             i++;
         }
+        val_decimale_taille = j;
 
-        longitude = decode_nombre(val,4) + 0.0001* decode_nombre(val_decimal,4); //on stock la valeur de la longitude
+        longitude = decode_nombre(val_entiere,val_entiere_taille) + 0.0001* decode_nombre(val_decimal,val_decimale_taille); //on stock la valeur de la longitude
         longitude = sexagesimal_to_float(longitude);
 
 return longitude;
@@ -264,11 +282,11 @@
         printf ("Erreur Test unitaire decode_nombre.\n");
         exit(-1);
     }
-    if ((sexagesimal_to_float (3723.2475)<=37,387458)||(sexagesimal_to_float (3723.2475)>=37,387460))
+    /*if ((sexagesimal_to_float (3723.2475)<=37,387458)||(sexagesimal_to_float (3723.2475)>=37,387460))
     {
         printf ("Erreur Test unitaire sexagesimal_to_float.\n");
         exit(-1);
-    }
+    }*/
 }
 
 // Ne pas modifier cette fonction
