Aujourd'hui vous allez essayer de vous débrouiller seuls. Je vous fournirai au fur et à mesure des corrections. Mais vous pouvez toujours me poser des questions en cas de problème.
#include <stdio.h>
void main(void)
{
float n1,n2,res;
printf("premier nombre ?");
scanf("%f",&n1);
printf("second nombre ?");
scanf("%f",&n2);
res=n1+n2;
printf("le résultat vaut %f\n",res);
}
#include <stdio.h>
void main(void)
{
float n1,n2,res;
char signe;
printf("premier nombre ?");
scanf("%f",&n1);
printf("signe opératoire ?");
fflush(stdin); /* vide la mémoire du clavier, qui contient le caractère
"Entrée" que vous avez appuyé après la saisie de n1 */
signe=getche(); /* évite de valider par entrée */
printf("second nombre ?");
scanf("%f",&n2);
if(signe=='+')res=n1+n2;
else if(signe=='-')res=n1-n2;
else if(signe=='*')res=n1*n2;
else if(signe=='/')res=n1/n2;
else printf("signe non conforme\n");
|
switch (signe)
{
case '+':res=n1+n2;break;
case '-':res=n1-n2;break;
case '*':res=n1*n2;break;
case '/':res=n1/n2;break;
default: printf("non conforme\n");
} |
printf("le résultat vaut %f\n",res);
}
#include <stdio.h>
void main(void)
{
float n2,res;
char signe;
printf("premier nombre ?");
scanf("%f",&res);
do
{
printf("signe opératoire ?");
fflush(stdin);
signe=getche();
if(signe!='=')
{
printf("prochain nombre ?");
scanf("%f",&n2);
if(signe=='+')res+=n2;
else if(signe=='-')res-=n2;
else if(signe=='*')res*=n2;
else if(signe=='/')res/=n2;
else printf("signe non conforme\n");
printf("résultat intermédiaire : %f\n",res);
}
}
while(signe!='=');
printf("le résultat vaut %f\n",res);
}
#include <stdio.h>
// je suis obligé de protoyper au moins la fonction calculer
char lire_un_signe(void);
float lire_un_nb(void);
float calculer(void);
char lire_un_signe(void)
{
//lit un signe, qui devrait être +, -, *, /, (, ) ou =
char s;
do scanf("%c",&s); while (s<=' '); //on élimine les blancs et return
return(s);
}
float lire_un_nb(void)
{
float n;
int nb;
char c;
nb=scanf("%f",&n);
if(nb==0) //on n'a pas pu lire ça ne peut être que ( ou une erreur
{
c=lire_un_signe(); //c vaut '(' sauf si erreur dans l'équation
if(c!='(')printf("erreur dans vos parenthèses !!!\n");
n=calculer(); //on calcule jusqu'à la prochaine )
}
return(n);
}
float calculer(void)
{
float res,n2;
char signe;
res=lire_un_nb();
do
{
signe=lire_un_signe();
if(signe=='+'||signe=='*'||signe=='-'||signe=='/')
{
n2=lire_un_nb();
if(signe=='+')res+=n2;
else if(signe=='-')res-=n2;
else if(signe=='*')res*=n2;
else if(signe=='/')res/=n2;
}
}
while(signe!='='&&signe!=')');
return(res);
}
void main(void)
{
float res;
printf("entrez votre équation, terminée par = (sur une ou plusieurs
lignes)\n");
printf("vous pouvez utiliser des parenthèses (bien appairées) et des
nombres signés\n");
printf("exemple : (2*(-1))+(-1*-3)*(1/(4*0.5))+1) (doit donner 1.5)\n?");
res=calculer();
printf("le résultat vaut %f\n",res);
}
retour au sommaire des travaux pratiques d'informatique.