Projet

Général

Profil

/***********************************************************************/
/* */
/* FILE :SP4b3.c */
/* DATE :Fri, May 28, 2021 */
/* DESCRIPTION :main program file. */
/* CPU GROUP :87B */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.18). */
/* NOTE:THIS IS A TYPICAL EXAMPLE. */
/***********************************************************************/

int trame_cmp(char * trame, char * type)
{
int i = 0; //compteur de la boucle
int result = 1; //valeur de retour
while (type[i]!='\0') //tant que la chaine type n'est pas termin?e on ex?cute le code suivant
{
if(trame[i+1]!=type[i])//si les caract?res de trame et type sont identique
{
result = 0;//le resultat passe ? 0
}
i++;//+1 au compteur
}
return result;//si les caract?res de trame et type sont identiques jusqu'? la fin de type on retourne la valeur 0 sinon on retourne la valeur par d?faut : 1
}

int decode_int(char a)
{
if((a>='0') && (a<='9')) //on veut d?coder que les chiffres (de 0 ? 9)
{
return (a-48);//le '0' ASCII correspond ? la valeur 48 en d?cimal donc on soustrait juste 48 au caract?re que l'on veut d?coder
} else
{
return -1;//si le caract?re n'est pas entre '0' et '9' on retourne -1
}
}

void test_decode_int(void)
{
if (decode_int('0')!=0){
exit(-1);
}
if (decode_int('5')!=5){
exit(-1);
}
if (decode_int('A')!=-1){
exit(-1);
}
}

int decode_nombre(char * ch,int n)
{
int i;//le compteur, curseur pour savoir o? l'on est dans ch
int res=0; //initialisation du r?sultat
for (i=0;i<n;i++)//on parcours ch
{
res += pow(10,(n-i-1))*decode_int(ch[i]);//chaque chiffre est d?cod? avec decode_int puis multipli? par la puissance de 10 selon la place o? il est dans ch et on ajoute ?a au resultat
}
return res;//on retourne le resultat
}

//fonction alternative ? la premi?re du m?me nom
int decode_nombre2(char * ch,int n)//n est le chiffre auquel on doit s'arr?ter
{
int i;//le compteur, curseur pour savoir o? l'on est dans ch
int res=0;//initialisation du r?sultat
for (i=0;i<n;i++)//on parcours ch jusqu'au n-i?me charact?re
{
res = 10*res + decode_int(ch[i]);//on multiplie le resultat par 10 puis on ajoute le chiffre d'apr?s pr?alablement d?cod? par decode_int
}
return res;//on retourne le resultat
}

//test unitaire pour savoir si decode_nombre fonctionne
void test_decode_nombre(void)
{
if (decode_nombre("7541",2)!=75){
exit(-1);
}
if (decode_nombre("7541",3)!=754){
exit(-1);
}
if (decode_nombre("123",3)!=123){
exit(-1);
}
if (decode_nombre("987654321",2)!=98){
exit(-1);
}
}

//test unitaire pour savoir si decode_nombre2 fonctionne
void test_decode_nombre2(void)
{
if (decode_nombre2("7541",2)!=75){
exit(-1);
}
if (decode_nombre2("7541",3)!=754){
exit(-1);
}
if (decode_nombre2("123",3)!=123){
exit(-1);
}
if (decode_nombre2("987654321",2)!=98){
exit(-1);
}
}

void tests_unitaires(void){
if (5!=5){
exit(-1);
}
if (trame_cmp("$GPGGA suite chaine","GPGGA")!=1){
exit(-1);
}
if (trame_cmp("$GPRMC suite chaine","GPGGA")!=0){
exit(-1);
}
if (trame_cmp("$GPRMC... ", "GPRMC" )!=1){
exit(-1);
}
if (trame_cmp("$APRMC...", "GPGGA")!=0){
exit(-1);
}
test_decode_int();
test_decode_nombre();
test_decode_nombre2();
}

void main(void)
{
tests_unitaires();
}
(2-2/9)