Index: branch/faye_awasemou/sp4a12/main.c
===================================================================
--- branch/faye_awasemou/sp4a12/main.c	(revision 408)
+++ branch/faye_awasemou/sp4a12/main.c	(revision 409)
@@ -14,6 +14,26 @@
                     "$GPVTG,99.4,T,,M,0.4,N,0.7,K*57",
                     "$GPZDA,141914.00,01,02,2006,00,00*69",
         0};
+            //declaration de la structure position contenant la latitude et la longitude
+typedef struct {
+float latitude;
+float longitude;
+} Position ;
+
+// declaration d'une stucture permettant de decrire une zone renseignant la position et la vitesse limite associée
+typedef struct {
+    Position rpos;
+    float vitmax;
+ } Zone ;
+
+//création d'une table de zone dangereuse
+Zone zones[] = {
+ {{44.7887762, -3.012}, 50}, /* Descripteur de la première zone */
+ {{44.7891220, -3,013}, 70},
+ {{45.7891220, 3,013}, 90},
+
+
+};
         //fonction qui permet de savoir si la trame commence par la chaine de caractere type(GPGGA)
 int trame_cmp(char* trame, char* type) //prise en paramete de la trame envoyée et du type
 {
@@ -65,11 +85,6 @@
     }
     return s;
 }
-    //declaration de la structure position contenant la latitude et la longitude
-typedef struct {
-float latitude;
-float longitude;
-} Position ;
 
 
 // fonction qui convertit la latitude en un nombre flottant
@@ -125,8 +140,8 @@
     //exempletrame="$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",
     if (trame_cmp(trame,"GPGGA"))  //on utilise la fonction trame_cmp pour savoir si la trame a le bon format GPGGA
     {
-            (*position).latitude=conversionLatitude(trame+17);//on recupere la position en latitude en acccedant au champ de la latitude dans la trame
-            (*position).longitude=conversionLongitude(trame+29);//on recupere la position en longitude en acccedant au champ de la longitude dans la trame
+            position->latitude=conversionLatitude(trame+17);//on recupere la position en latitude en acccedant au champ de la latitude dans la trame
+            position->longitude=conversionLongitude(trame+29);//on recupere la position en longitude en acccedant au champ de la longitude dans la trame
             return 1;//on retourne 1 pour montrer qu'on a le trame type GPGGA et qu'on a recuperé la position en latitude et longitude
     }
      return 0;//on retourne 0 sinon, la trame est ignorée
@@ -135,7 +150,7 @@
 float calcul_distance(Position P1, Position P2)
 {
     float distance;//variable contenant la distance calculée entre ces deux points
-    distance=(40000/360)*sqrt(pow((P2.latitude-P1.latitude),2))+ (pow((P2.longitude-P1.longitude),2));//40000(perimetre de la terre)/360(degré)=111km ->1°=111km sur terre
+    distance=(40000/360)*sqrt((P2.latitude-P1.latitude)*(P2.latitude-P1.latitude)+ (P2.longitude-P1.longitude)*(P2.longitude-P1.longitude));//40000(perimetre de la terre)/360(degré)=111km ->1°=111km sur terre
     return distance; //on revoie la valeur du la distance calculée
 
 }
@@ -149,25 +164,12 @@
     return vitesse; //on revoie la valeur du la vistesse calculée
 }
 
-// declaration d'une stucture permettant de decrire une zone renseignant la position et la vitesse limite associée
-typedef struct {
-    Position rpos;
-    float vitmax;
- } Zone ;
 
-//création d'une table de zone dangereuse
-Zone zones[] = {
- {{44.7887762, -3.012}, 50}, /* Descripteur de la première zone */
- {{44.7891220, -3,013}, 70},
- {{45.7891220, 3,013}, 90},
-
-
-};
 //fonction qui calcule la distance à la plus proche zone
 int distance_a_la_proche_zone(Position p, Zone r[],int nb_zones, float *d)
 {
     float diCalculee;// variables contenant la valeur de la distance calculee entre la position courante et l element[i] du tableau de zones dangereuses
-    int i, index;//i=variable pour parcourir tout le tableau de zones et index=i qui minimise le tableau de zones par rapport a la distance calculee
+    int i, index=0;//i=variable pour parcourir tout le tableau de zones et index=i qui minimise le tableau de zones par rapport a la distance calculee, elle correspond a la valeur de i pour laquelle on se situe a la zone la plus proche
     *d=calcul_distance(p,r[0].rpos);//on calcule la distance entre la position courante du vehicule et le premier element du tableau de zones dangereuses
        if(nb_zones>0)
        {
@@ -182,11 +184,9 @@
                 }
             }
             return index;
-            return d;
+       }
+        return -1;// on retourne -1 si la table est vide
 
-       }else
-           return -1;// on retourne -1 si la table est vide
-
 }
 
 
@@ -205,13 +205,24 @@
 
 //Ajouter vos tests unitaires dans cette fonction.
 void tests_unitaires(void)
-{
+{
+     //variables concernant les tests unitaires calcul_vitesse et calcul_distance
+    Position  P1={45.75040333,3.110065};
+    Position P2={45.7500,3.11006};
+     //variable concernant le test unitaire  decode_trame
+    Position * position;
+    //variables concernant le test unitaire distance_a_la_proche_zone
+    Position p;
+    p.latitude=45.7500;
+    p.longitude=3.11006;
+    int nb_zones=3;
+    float d;
+        //test unutaire basique
         if (5!=5){
-            //test unutaire basique
-
             printf ("Erreur Test unitaire basique.\n");
             exit(-1);
             }
+
             //tests unutaires de la fonction trame_cmp
         if (trame_cmp("$GPGGA suite chaine","GPGGA")!=1){
             printf ("Erreur Test unitaire trame_cmp.\n");
@@ -257,15 +268,15 @@
 
               //tests unutaires de la fonction conversionLatitude
 
-        if (conversionLatitude("3723.2475")-37,38745833 > 0.0001){
+        if (conversionLatitude("3723.2475")-37.38745833 > 0.0001){
              printf ("Erreur Test unitaire conversion Latitude.\n");
              exit(-1);
             }
 
-            if (conversionLatitude("4545.0000")-45.7500 > 0.0001){
+        if (conversionLatitude("4545.0000")-45.7500 > 0.0001){
              printf ("Erreur Test unitaire conversion Latitude.\n");
              exit(-1);
-                }
+            }
 
               //tests unutaires de la fonction conversionLongitude
 
@@ -279,36 +290,40 @@
              exit(-1);
             }
              //tests unutaires de la fonction decode_trame
-     /*   if(decode_trame
+   /*   if(decode_trame("$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",position)==0){
             printf("Erreur Test decode trame \n");
             exit(-1);
-    }
+            }*/
+
+
             //tests unutaires de la fonction calcul_distance
-            if (calcul_distance("00306.6036")- 3.11006 > 0.0001){
-         printf ("Erreur Test unitaire calcul_distance.\n");
-         exit(-1);
+     if (calcul_distance(P1,P2)- 0.0448 > 0.0001){
+            printf ("Erreur Test unitaire calcul_distance.\n");
+            exit(-1);
             }
+
             //tests unutaires de la fonction calcul_vitesse
-            if (calcul_vitesse("00306.6036")- 3.11006 > 0.0001){
-         printf ("Erreur Test unitaire calcul_vitesse.\n");
-         exit(-1);
-            }
-            //tests unutaires de la fonction calcul_distance_a_la_proche_zone
-            if (conversionLongitude("00306.6036")- 3.11006 > 0.0001){
-         printf ("Erreur Test unitaire calcul_distance_a_la_proche_zone.\n");
-         exit(-1);
-            }*/
-            // Test unitaire de la fonction_generique
-            if (fonction_generique(",4545.0242") - 45.75040333 > 0.0001 )
+     /*  if (calcul_vitesse(P1,P2)-161.28  > 0.0001){
+             printf ("Erreur Test unitaire calcul_vitesse.\n");
+             exit(-1);
+             }*/
+
+            //tests unutaires de la fonction distance_a_la_proche_zone
+      if (distance_a_la_proche_zone(P1,zones,nb_zones,&d)!=2){
+             printf ("Erreur Test unitaire distance_a_la_proche_zone.\n");
+             exit(-1);
+             }
+            // Test unitaire de la fonctionGenerique
+      /* if (fonctionGenerique("4545.0242") - 45.75040333 > 0.0001 )
             {
-        printf("Erreur Test unitaire conversion latitude !!! \n");
-        exit(-1);
+            printf("Erreur Test unitaire conversion latitude !!! \n");
+            exit(-1);
             }
-        if (fonction_generique("00306.6039")- 3.110065 > 0.0001)
+        if (fonctionGenerique("00306.6039")- 3.110065 > 0.0001)
             {
-        printf("Erreur Test unitaire conversion longitude !!! \n");
-        exit(-1);
-            }
+            printf("Erreur Test unitaire conversion longitude !!! \n");
+            exit(-1);
+            }*/
 }
 
 
