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 88
| printf("\nChainePurgeeFINALE = %sFIN",chainePurgee);
fflush(stdout);
//Fin du fichier chainePurgee contient la chaine ex: moins un plus moins deux
//plus longue type de chaine de base => prevoir les signes !
while(c!='\0')
{
printf("\nDEBUT BOUCLE\n");
//Composer un mot jusqua l'espace
c=chainePurgee[i];
printf("\nCHAR TRAITE : %c\n",c);
i++;
if(c != ' ')
{
x=whatIsIt(c);
printf("\nINT TRAITE : %d\n",x);
if(x < 0 && ((flagOpA==0 && flagOpeator==0) || (flagOpeator==1 && flagOpB==0))) //Si x detecte comme operande
{
if(x == -1)
{
fact=1;
}
else
{
if(x == -2)
{
fact=-1;
}
else
{
printf("\n**ERREUR** Operation mal placée ou erreur de traitement.");
exit(1);
}
}
if(flagOpA==0)
flagOpA=1;
else
if(flagOpA==1)
flagOpB=1;
}
if(x < 0 && (flagA==1 && flagOpeator==0))//x detecte comme operation
{
operation=x;
printf("\nOPERATION VOULUE : %d\n",operation);
switch(operation)
{
case -1: operationChar='+';
break;
case -2: operationChar='-';
break;
case -3: operationChar='*';
break;
case -4: operationChar='/';
break;
default : printf("\n**ERREUR** L'operation n'est pas un symbole accepté.");
exit(1);
}
}
else//x detecte comme chiffre, on prend en compte le facteur issue du signe de l'operande
{
if(flagA==0)
{
operandeA=fact*x;
flagA=1;
fact=1;
}
else
{
if(flagB==0)
{
operandeB=fact*x;
flagB=1;
fact=1;
}
else
{
printf("\n**ERREUR** Chiffre mal placé ou erreur de traitement.");
}
}
}
}
//On passe l'espace
i++;
j=0;
}
//Les operandes, operations sont en place, on lance le calcul
resultat=calcul(operandeA, operation, operandeB, 0 , 0); |
Partager