doudalopez
19Messages postés
17 mai 2008Date d'inscription
23 mai 2008 à 21:32
bonjour
vous pouvez m'aider a corriger mes erreurs
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
float calcul(float operateur1, float operateur2, float operande);
void demo_couleurs(void)
{
HANDLE h = GetStdHandle ( STD_OUTPUT_HANDLE );
WORD wOldColorAttrs;
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
GetConsoleScreenBufferInfo(h, &csbiInfo);
wOldColorAttrs = csbiInfo.wAttributes;
SetConsoleTextAttribute ( h, FOREGROUND_BLUE ); // on ecrit en bleu
}
//int main(int argc, char* argv[])
int main(int argc, char* argv[])
{
float resultat,resultat_temp,resultat_temp1,resultat_temp2,resultat_temp3;
float a,b,c,d,e;
char op1,op2,op3,op4;
demo_couleurs();
if(argc > 9){
printf("Nombre d'arguments doit etre inferieur à 9\n");
}
if(argc == 3) //deux operandes
{
scanf("%f%c%f",&a, &op1, &b);
printf("%f %c %f\n", a, op1, b);
// resultat = calcul(a, b, op1);
}
if(argc == 5) //trois operandes
{
if(op1 == '*' || op1 == '/'){
scanf("%f%c%f%c%f",&a, &op1, &b);
printf("%f %c %f %c %f\n", a, op1, b,op2,c);
resultat_temp= calcul(a, b, op1);
resultat = calcul(resultat_temp, c, op2);
}else{
if(op2 == '*' || op2 == '/'){
resultat_temp = calcul(b, c, op2);
resultat = calcul(a, resultat_temp, op2);
}else {
resultat_temp = calcul(a, b, op1);
resultat = calcul(resultat_temp, c, op2);
}
}
}
if(argc == 7) //quatre operandes
{
if(op1 == '*' || op1 == '/')
{
scanf("%f%c%f%c%f%c%f",&a, &op1, &b,op2,c,op3,d);
printf("%f %c %f %c %f %c %f\n", a, op1,b,op2,c,op3,d);
resultat_temp1 = calcul(a, b, op1);
resultat_temp2 = calcul(resultat_temp1, c, op2);
resultat_temp = calcul(resultat_temp2, d, op3);
}else{
if(op2 == '*' || op2 == '/')
{
resultat_temp1 = calcul(b, c, op2);
resultat_temp2 = calcul(a,resultat_temp1,op2);
resultat_temp = calcul(resultat_temp2,d, op3);
}else
{
resultat_temp1 = calcul(c,d, op3);
resultat_temp2 = calcul(b,resultat_temp1,op2);
resultat_temp = calcul(a,resultat_temp2,op3);
}
}
}
if(argc == 9) //cinq operandes
{
if(op1 == '*' || op1 == '/')
{
scanf("%f%c%f%c%f%c%f%c%f",&a, &op1, &b,op2,c,op3,d,op4,e);
printf("%f %c %f %c %f %c %f %c %f\n", a, op1,b,op2,c,op3,d,op4,e);
resultat_temp1 = calcul(a, b, op1);
resultat_temp2 = calcul(resultat_temp1, c, op2);
resultat_temp3 = calcul(resultat_temp2, d, op3);
resultat_temp = calcul(resultat_temp3, e, op4);
}else
{
if(op2 == '*' || op2 == '/')
{
resultat_temp1 = calcul(b, c, op2);
resultat_temp2 = calcul(a,resultat_temp1, op1);
resultat_temp3 = calcul(resultat_temp2,d, op3);
resultat_temp = calcul(resultat_temp3,e, op4);
}
else
{
resultat_temp1 = calcul(c,d, op3);
resultat_temp2 = calcul(b,resultat_temp1,op2);
resultat_temp3 = calcul(a,resultat_temp2,op3);
resultat_temp = calcul(resultat_temp3,e,op4);
}
}else
{
resultat_temp1 = calcul(d,e,op4);
resultat_temp2 = calcul(c,resultat_temp1,op3);
resultat_temp3 = calcul(b,resultat_temp2,op2);
resultat_temp = calcul(a,resultat_temp3,op1);
}else // nombre d'operandes invalides
{
printf("Nombre d'operandes invalides");
}
}
}
float calcul(float operateur1, float operateur2, float operande)
{
//void calcul(operateur1, operateur2, operande){
if(op == '+'){
retour = operateur1 + operateur2
}
if(op == '-'){
retour = operateur1 - operateur2
}
if(op== '/'){
retour = operateur1 / operateur2
}
if(op == '*'){
retour = operateur1 * operateur2
}
return retour;
}