Écrire une procédure main se comportant comme une calculette c'est à dire exécutant une boucle sur :
+ - * / %
;
exit(1)
.
Ceci ne réalise pas un interface utilisateur bien agréable, car
il serait plus intéressant de continuer la boucle au lieu de terminer le
programme.
Cela n'a pas été implémenté car ce n'est pas réalisable à l'aide des seules
possibilités de base de scanf
qui ont été présentées.
Dans le chapitre << Les entrées-sorties >>, scanf
sera expliqué de
manière exhaustive et une meilleure version de ce programme sera présentée.
#include <stdio.h> enum {FAUX, VRAI}; /*****************************************************************************/ /* */ /* main */ /* */ /*****************************************************************************/ int main() { int i,j,r; /* les opérandes */ char c; /* l'opérateur */ char imp; /* booléen de demande d'impression du résultat */ int ret; /* code de retour de scanf */ while (1) { if ((ret = scanf("%d %c %d",&i,&c,&j)) != 3) { if (ret == EOF) exit(0); printf("Erreur de syntaxe\n"); exit(1); } imp = VRAI; switch (c) { case '+' : r = i + j; break; case '-' : r = i - j; break; case '*' : r = i * j; break; case '/' : if ( j == 0) { printf("Division par zéro\n"); imp = FAUX; } else r = i / j; break; case '%' : r = i % j; break; default : printf("l'opérateur %c est incorrect\n",c); imp = FAUX; } /* fin du switch */ if (imp) printf("%d\n",r); } }