1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
float code(char c)
{
switch (c)
{
case '0': return 0; break;
case '1': return 1; break;
case '2': return 2; break;
case '3': return 3; break;
case '4': return 4; break;
case '5': return 5; break;
case '6': return 6; break;
case '7': return 7; break;
case '8': return 8; break;
case '9': return 9; break;
case '(': return 11; break;
case ')': return 12; break;
case '+': return 13; break;
case '-': return 14; break;
case '*': return 15; break;
case '/': return 16; break;
case '%': return 17; break;
}
}
void conversion(char *ch, float **t, int *pos)
{
int i=0,j=0,b=0,l,k=0,pui,l2,pui2;
float nombre1,nombre2;
char ch2[22],ch3[22];
*pos=0;
while(i<=strlen(ch));
{
b=0; j=0; k=0;
while (!operateur(ch[i]) && ch[i]!=')' && ch[i]!='(' && ch[i]!='\0') //chercher les nombres et les sauvgarder dans des chaines
{
if(ch[i]=='.' || ch[i]=='e' || ch[i]=='E')
{
i++;
b==1;
}
if(b==0)
{ ch2[j]=ch[i]; j++; }
else
{ ch3[k]=ch[i]; k++; }
i++;
}
nombre1=nombre2=pui=pui2=0;
if(j!=0)
{
l=strlen(ch2);
while(l>0) //construction de la partie gauche du nombre (avant le point)
{
nombre1 = nombre1 + (code(ch2[l-1])*(pow(10,pui)));
pui++;
l--;
}
if(k!=0)
{
l2=strlen(ch3);
while(l2>0) //construction de la partie droite du nombre (apres le point)
{
nombre2 = nombre2 + (code(ch3[l2-1])*(pow(10,pui2)));
pui2++;
l2--;
}
}
(*t)[(*pos)]=nombre1+((nombre2)/(pow(10,strlen(ch3)))); //mettre le nombre final dans un tableau
(*pos)++;
}
if (operateur(ch[i])==1 || ch[i]=='(' || ch[i]==')' || ch[i]=='e' || ch[i]=='E') // autre qu'un nombre
{
(*t)[(*pos)]=code(ch[i]);
(*pos)++;
}
i++;
}
} |
Partager