Index: branch/moubtassime/sp4a12/main.c
===================================================================
--- branch/moubtassime/sp4a12/main.c	(revision 508)
+++ branch/moubtassime/sp4a12/main.c	(revision 509)
@@ -1,7 +1,8 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <strings.h>
-#include "trame.h"
+#include "trame.h"
+#include <maths.h>
 
 //Trames de tests à modifier si nécessaire.
 char * trames[]=  {"$GPGSV,3,2,10,15,03,077,,18,04,041,42,19,85,271,,20,08,214,*7C",
@@ -12,14 +13,16 @@
                     "$GPGSA,A,3,,03,,22,14,,01,,18,,,,3.9,3.4,1.9*39",
                     "$GPVTG,99.4,T,,M,0.4,N,0.7,K*57",
                     "$GPZDA,141914.00,01,02,2006,00,00*69",
-                    0};
+                    0};
 
+
 //Fonction à modifier !!!!!
 void traitement(char * trame)
 {
     static int cpt=0;
+    if (trame_cmp(trame,"GPGGA")==1){
+        printf ("> %s\n",trame);}
     cpt++;
-    printf ("> %s\n",trame);
 }
 
 
@@ -28,11 +31,7 @@
     if (5!=5){
         printf ("Erreur Test unitaire basique.\n");
         exit(-1);
-    }
-    /*if (trame_cmp("$GPGGA suite chaine","GPGGA")!=1){
-        printf ("Erreur Test unitaire trame_cmp.\n");
-        exit(-1);
-    }*/
+    }
 
     if (trame_cmp("$GPGGA suite chaine","GPGGA")!=1){
         printf ("Erreur Test unitaire trame_cmp.\n");
@@ -51,63 +50,127 @@
         exit(-1);
 
     }
+    test_decode_int();
+    test_decode_nombre();
 }
 
-int trame_cmp(char * trame , char * type) {
+int trame_cmp(char* trame,char* type){
+    int i=0, nombre = 0;
+    while (type[i] != '\0'){
+        if (type[i] == trame[i+1]){
+            nombre += 1;
+        }
+        i += 1;}
+    if (nombre == i){
+        return 1;
+    }
+    else{
+        return 0;
+        }
+}
 
-    int i,n=1;
-    int resultat=1;
-    while ( type[n] != 'A'){
-        n++;
-    n++;
+
+
+int decode_int( char c) {
+    int n;
+    if ((c >= '0') && (c <= '9')){
+        c -= 48; // Affectation du code ASCII correspondant au caractere ASCII
+        n = c;
     }
+    else{
+        n = -1;
+    }
+    return n;
+}
 
-    for ( i=1;i<n;i++) {
-        if ( trame[i+1] != type[i]){
-            resultat=0;
-            }}
-    return(resultat);
+
+
+void test_decode_int(void) {
+    if (decode_int("3")!=3) {
+        printf("erreur test unitaire decode_int \n");
     }
+}
 
 
+int decode_nombre( char *c , int n) {
 
+    int i;
+    for(i = n; i <= 10 ; i++){
+        c[i] = '\0';
+    }
+}
 
 
-int decode_int( char c) {
 
-    int n;
-    n=(int)c;
-    return(n);
 
-}
 
-void test_decode_int(void) {
-    if (decode_int("3")!=3) {
-        printf("erreur test unitaire decode_int \n");
-        exit(-1);
-        }
+
+
+
+struct position {
+    int longitude;
+    int latitude;
 }
 
 
-int decode_nombre( char c[2]) {
 
-    int n,dec,uni;
+void decode_trame ( char *trame[1000] , int* longitude , int* latitude ) {
 
-    dec= decode_int(c[0]);
-    uni= decode_int(c[1]);
-    n= dec*10 + uni;
-    return(n);
+    int i;
+    for ( i=17; i<21;i++) {
+        *latitude= *latitude*10 + trame[i-48]; //partie entière de la lat
+    }
+    for ( i=22;i<26;i++) {
+        *latitude= *latitude*10 + trame[i-48]; // partie décimale de la lat
+    }
+    for ( i=27;i<31;i++) {
+        *longitude= *longitude*10 + trame[i-48];  //partie entière de la long
+    }
+    for( i=32; i<36;i++) {
+        *longitude= *longitude*10 + trame[i-48];  // partie décimale de la long
+    }
 
+    *latitude =  *latitude - *latitude%1000000 + *latitude%1000000 * 5/3;                             //reste à convertir la latitude en héxa
+    *longitude =   *longitude - *longitude%1000000 + *longitude%1000000 * 5/3;                        //reste à convertir la longitude
+
 }
 
 
+float calcule_distance(struct position p1,struct position p2  ){
 
+    float distance;
+    float lat1= p1.latitude;
+    float lat2= p2.latitude;
+    float lon1= p1.longitude;
+    float lon2= p2.longitude;
 
+    lat1 = lat1/1000000;   //conversion lat et long
+    lat2 = lat2/1000000;
+    lon1 = lon1/1000000;
+    lon2 = lon2/1000000;
 
+    position= acos(sin(lat1*M_PI/180)*sin(lat2*M_PI/180) + cos(lon1*M_PI/180)*cos(lon2*M_PI/180)*cos(lon1*M_PI/180 -lon2*M_PI/180)*6378;  //distance en km
 
+    printf("distance est égale à %f km \n", distance);
 
+    return(distance);
+}
 
 
+ float calcule_vitesse( struct position p1, struct position p2 ){
+    float vitesse ;
+    float distance;
+    distance = calcule_distance( position p1, position p2);
+    vitesse= distance*3600;
+    printf("la vitesse est égale à %f km/h \n", vitesse);
+}
+
+
+int distance_a_la_proche_zone( struct position p, float Zone[],int nb_zones, float *d){
+
+
+
+}
 
 // Ne pas modifier cette fonction
 int main(int argc,char ** argv)
@@ -130,4 +193,6 @@
         traitement(trame);
 
     return 0;
-}
+}
+
+
Index: branch/moubtassime/sp4a12/sp4a.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: branch/moubtassime/sp4a12/sp4a.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
