Révision 580
Ajouté par albest il y a presque 4 ans
main.c | ||
---|---|---|
|
||
int decode_int(char c){ //Cette fonction renvoie la valeur decimale associ?e ? un caract?re donn? en param?tre compris entre '0' et '9' et renvoie -1 sinon.
|
||
int val = c - '0';
|
||
if (val<0 || val>9){
|
||
if (val<0 || val>9){ //**En premier faire le test pour ne pas faire op?ration pour rien
|
||
val = -1;
|
||
}
|
||
return val;
|
||
... | ... | |
}
|
||
|
||
float conv_lat(char * latitude){ //La fonction convertie la latitude en sexa en degr?.
|
||
float val = decode_nombre(latitude,4);
|
||
float val = decode_nombre(latitude,4); //* bof
|
||
float res = 0;
|
||
for (int i = 5; i < 9;i++){
|
||
val += (decode_int(latitude[i]))*pow(10,-i+4); //On replace chaque chiffre au bonne endroit (unit?, dizaine ...).
|
||
}
|
||
res = (int)(val/100);
|
||
res = (int)(val/100); //****
|
||
res += (val - res*100)/60;
|
||
return res;}
|
||
return res;
|
||
}
|
||
|
||
float conv_long(char * longitude){ //La fonction convertie la longitude en sexa en degr?.
|
||
float val = decode_nombre(longitude,5);
|
||
float val = decode_nombre(longitude,5); //**
|
||
float res = 0;
|
||
for (int i = 6; i < 10;i++){
|
||
val += (decode_int(longitude[i]))*pow(10,-i+5);
|
||
... | ... | |
|
||
float conversion(char * chaine){ //Cette fonction convertie soit une latitude soit une longitude en degr?.
|
||
int cpt = 0;
|
||
while (chaine[cpt]!='\0'){
|
||
while (chaine[cpt]!='\0'){ //***, .
|
||
cpt++;
|
||
}
|
||
if (cpt == 9){
|
||
... | ... | |
}
|
||
}
|
||
|
||
typedef struct {
|
||
typedef struct { //*
|
||
float latitude;
|
||
float longitude;
|
||
} Position;
|
||
|
||
int decode_trame(char * trame, Position *p){
|
||
char longi[10];
|
||
char longi[10]={'\0'}; //*** trame -> @ lati -> @
|
||
char lati[9];
|
||
int cpt = 0;
|
||
int i = 0;
|
||
... | ... | |
while (trame[i] != '\0'){
|
||
if (trame[i] == ','){ //On compte le nombre de virgule.
|
||
cpt += 1;
|
||
i ++;
|
||
i += 1;
|
||
}
|
||
if (cpt == 2) { //On regarde si le nombre de virgule correspond ? 2, ie la latitude
|
||
lati[j] = trame[i]; //On stocke caract?re par caract?re pour isoler la latitude afin de la convertir.
|
||
j ++;
|
||
}
|
||
if (cpt == 4) { //On regarde si le nombre de virgule correspond ? 4, ie la longitude
|
||
longi[y] = trame[i]; //On stocke caract?re par caract?re pour isoler la longitude afin de la convertir.
|
||
longi[y] = trame[i];
|
||
y ++;
|
||
}
|
||
i ++;
|
||
i += 1;
|
||
}
|
||
p->latitude = conv_lat(lati);
|
||
p->latitude = conv_lat(lati); //***************** vous avez de la chance &trame[15], trame+15
|
||
|
||
p->longitude = conv_long(longi); //On stocke la latitude et la longitude convertie dans structure position.
|
||
return 1;
|
||
}
|
||
... | ... | |
}
|
||
|
||
float calcule_vitesse(Position p_1, Position p_2){
|
||
return calcule_distance(p_1,p_2)*3600; //On calcul la vitesse avec la formule v=d/t avec t=1s.
|
||
return calcule_distance(p_1,p_2)*3600; //On calcul la vitesse (en km) avec la formule v=d/t avec t=1s.
|
||
}
|
||
|
||
typedef struct{
|
||
... | ... | |
|
||
int distance_a_la_plus_poche_zone(Position p, Zone r[], int nb_zones, float *d){
|
||
int index = 0;
|
||
float distance = calcule_distance(p, r[0].rpos); //On initialise une distance pour pouvoir ensuite la comparer et chercher le minimum.
|
||
*d = calcule_distance(p, r[0].rpos); //On initialise une distance pour pouvoir ensuite la comparer et chercher le minimum.
|
||
for (int i = 1; i<nb_zones; i++){ //On parcours la table de zone dangereuse.
|
||
if (calcule_distance(p,r[i].rpos) < distance){
|
||
if (calcule_distance(p,r[i].rpos) < *d){
|
||
index = i;
|
||
distance = calcule_distance(p,r[i].rpos);
|
||
*d = calcule_distance(p,r[i].rpos);
|
||
}
|
||
}
|
||
*d = distance;
|
||
return index;
|
||
}
|
||
|
||
Position pos_prec;
|
||
|
||
//Fonction ? modifier !!!!!
|
||
|
||
void traitement(char * trame){
|
||
Position pos;
|
||
int alarme;
|
Formats disponibles : Unified diff
Optimisation du code pour le clavier matricé et des fonctions des premières séances