Salut tout le monde,
J'ai créé un programme en C qui permet de faire un calcul simple.
Pour se faire, l'utilisateur doit saisir une chaine de caractères sous la forme "opérande1 opérateur opérande2",
une fonction suprEspaces supprimera les espaces, une fonction extractop fera l'extraction de l'opérateur, deux fonctions
extractx1 et extractx2 extrairont les deux opérandes enfin la fonction calcul effectuera l'opération :
voici mon code :
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void suprEspace(char *expr);
void extractop(char *expr,int *ind,char *op);
int extractx1(char *expr,int ind);
int extractx2(char *expr,int ind);
int calcul(int x1,int op,int x2);
void main()
{char expr[255];int ind;char op;int x1,x2,ans;
printf("Donnez l'expression : ");
gets(expr);
suprEspace(expr);
extractop(expr,&ind,&op);
x1=extractx1(expr,ind);
x2=extractx2(expr,ind);
printf("\n%d\n",x1);
printf("\n%d\n",x2);
puts(expr);
ans=calcul(x1,op,x2);
printf("\n%s=%d",expr,ans);
getch();
}
void suprEspace(char *expr)
{int i,j,n;
n=strlen(expr);
for (i=0;i<n;i++)
if (expr[i]==' ')
{
for(j=i;j<(n);j++)
expr[j]=expr[j+1];
}
}
void extractop(char *expr,int *ind,char *op)
{int n,i;
n=strlen(expr);
for (i=0;i<n;i++)
if ((expr[i]=='+')||(expr[i]=='-')||(expr[i]=='*')||(expr[i]=='/'))
{*ind=i;
*op=expr[i];}
}
int extractx1(char *expr,int ind)
{int i,x;char iks[100];
for (i=0;i<ind;i++)
iks[i]=expr[i] ;
x=atoi(iks);
return x;
}
int extractx2(char *expr,int ind)
{int i=0,y;char igrg[100];
while (expr[i]!='\0')
{
igrg[i]=expr[ind+i] ;
i++; }
y=atoi(igrg);
return y;
}
int calcul(int x1,int op,int x2)
{
switch(op)
{
case '+':
return (x1+x2);
case '-':
return (x1-x2);
case '*':
return (x1*x2);
}
return(x1%x2);
}
Borland arrive a compiler le code mais le programme plante lorsque j'essaie d'effectuer une division et je pense que c'est dû au type de retour lors d'une division.
aussi j'aimerais créer une fonction qui permet de vérifier si l'expression saisie est valide ou pas alors svp faites moi part de vos idées.
MERCI d'avance