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.