root/branch/moisan/sp4b3/SP4b3/SP4b3.c @ 640
640 | mamoisan | /***********************************************************************/
|
|
/* */
|
|||
/* 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();
|
|||
}
|