Calculatrice

doudalopez Messages postés 19 Statut Membre -  
doudalopez Messages postés 19 Statut Membre -
Bonjour,
qui peut me faire un programme en C qui permet de lire une expression mathematique simple et la calculer
A voir également:

19 réponses

ibtor Messages postés 2564 Statut Membre 283
 
t'as essayé de faire quoi pour l'instant ?
0
doudalopez Messages postés 19 Statut Membre
 
#include <stdio.h>
#include<stdlib.h>
#include <windows.h>
#include <conio.h>
int wait4key(void);
float N1,N2;
float resultat
printf("la somme de %f et de %f donne %f",N1, N2)

et la suis bloqué
0
ibtor Messages postés 2564 Statut Membre 283
 
float resultat ;
resultat = N1 + N2

printf("la somme de %f et de %f donne %f",N1, N2,resultat)
0
doudalopez Messages postés 19 Statut Membre
 
je ne comprend pas ce que vous m'avez envoyé
0
ibtor Messages postés 2564 Statut Membre 283
 
rajoute cequ'il y'a en gras dans ton code

ça fait une addition de N1 + N2
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
doudalopez Messages postés 19 Statut Membre
 
ca ne me permet pas de lire une expression mathematique
0
ibtor Messages postés 2564 Statut Membre 283
 
t'as 2 choix :

1/facile

tu poses 3 questions :
-premier nombre ?
-opération (+,-,*,/,^,%) ?
- deuxième nombre ?
et suivant les réponses, tu calcules ton truc

2/plus difficile
-l'utilisateur tape sa formule (par ex 2+2)
et là tu vérifie pour chaque caractères s'il s'agit d'un nombre, d'une lettre qui n'a rien à faire là, d'un espace,d'un opérateur, etc... et tu fais ton ptit bazar après
0
doudalopez Messages postés 19 Statut Membre
 
#include <stdio.h>
#include<stdlib.h>
#include <windows.h>
#include <conio.h>
int wait4key(void);
float N1,N2;
float resultat
char op=+
printf("tapez le premier nombre\n");
scanf(" %f", &N1");
printf("tapez le second nombre\n");
scanf(" %f, &N2");
float resultat=N1+N2
printf("la somme de%f et de %f donne %f",resultat);

ca ne marche pas
0
ibtor Messages postés 2564 Statut Membre 283
 
met

float resultat=N1+N2;

à l'avant dernière ligne
0
vignemail1 Messages postés 1262 Statut Contributeur 259
 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

char *nb1;
char *nb2;
double double1,double2;
char *op;

printf("Nombre1 : ");
scanf("%s", nb1);
printf("Opérateur : ");
scanf("%s", op);
printf("Nombre1 : ");
scanf("%s", nb1);

double1 = atof(nb1);
double2 = atof(nb2);

if (!strcasecmp(op, "+")){
printf("%e\n", double1 + double2);
}else if (!strcasecmp(op, "-")){
printf("%e\n", double1 - double2);
}else if (!strcasecmp(op, "%")){
printf("%e\n", fmod(double1,double2));
}else if (!strcasecmp(op, "*")){
printf("%e\n", double1 * double2);
}else if (!strcasecmp(op, "/")){
if (double2 != 0){
printf("%e\n", double1 + double2);
}else{
printf("Division par zero\n");
}
}

Ne pas oublier de faire l'édition des liens avec -lm
0
doudalopez Messages postés 19 Statut Membre
 
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
int wait4key(void);

void demo_ASCII_extended();

void demo_couleurs(void);
HANDLE h = GetStdHandle ( STD_OUTPUT_HANDLE );
WORD wOldColorAttrs;
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
GetConsoleScreenBufferInfo(h, &csbiInfo);
wOldColorAttrs = csbiInfo.wAttributes;
int main(int argc, char* argv[])
{

float N1,N2;
float resultat;
int op;
float a, b, res;
printf("tape un nombre\n");
scanf(" %f",&a);
printf("tape un nombre\n");
scanf(" %f",&b);
printf("tape 1\t pour + \n tape 2 \t pour - \n tape 3 \t pour * \n tape 4 pour /\n");
scanf(" %d",&op);
if(op==1)
{
res=a+b;
}
else
if(op==2)
{
res=a-b;
}

else
if(op==3)
{
res=a*b;
}

else
{
res=(float)a/(float)b;
}
printf("le resultat est %f\n",res);

printf("\t*---* *---* *---*\n");
printf("\t| 9 | | 8 | | 7 |\n");
printf("\t*---* *---* *---*\n");
printf("\t*---* *---* *---*\n");
printf("\t| / | | * | | 6 |\n");
printf("\t*---* *---* *---*\n");
printf("\t*---* *---* *---*\n");
printf("\t| 5 | | 4 | | - |\n");
printf("\t*---* *---* *---*\n");
printf("\t*---* *---* *---*\n");
printf("\t| 3 | | 2 | | + |\n");
printf("\t*---* *---* *---*\n");
printf("\t*---* *---* *---*\n");
printf("\t| 1 | | 0 | | |\n");
printf("\t*---* *---* *---*\n");

system("pause");
return 0;
}
je dois creer un outil qui permet de faire des calculs simples:
-implémenter les operations arithmetiques courantes
-implémenter une interface graphique faciles à utiliser
-et en fin lire une expression mathematique et la calculer
0
doudalopez Messages postés 19 Statut Membre
 
le programme que vous avez fait a plein d'erreurs est ce que vous pouvez les corrigé car j'ai essayé mais ca ne marche pas
0
doudalopez Messages postés 19 Statut Membre
 
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;
}
0
doudalopez Messages postés 19 Statut Membre
 
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;
}
0
ibtor Messages postés 2564 Statut Membre 283
 
c'est quoi les messages erreurs ?
0
doudalopez Messages postés 19 Statut Membre
 
y'a des erreurs sur mon code que j'arrive pas corriger
0
ibtor Messages postés 2564 Statut Membre 283
 
1/si y'a des erreurs à la compil, publie les
2/qu'est ce qui marche pas PRECISEMMENT ?
0
doudalopez Messages postés 19 Statut Membre
 
je l'ai fait c'est le derneir code que j'ai envoyé
0
ibtor Messages postés 2564 Statut Membre 283
 
bon je vais essayer de faire le plus simple possible :

QUAND TU LANCES LE PROGRAMME, QU'EST CE QUI MARCHE PAS ???
0
doudalopez Messages postés 19 Statut Membre
 
a chaque fois que je compile ca me fait appui sur une touche pour continuer
0
ibtor Messages postés 2564 Statut Membre 283
 
dans ton main, tu n'as pas de printf ni de scanf indiquant (saisir le calcul...)

à placer juste avant ton premier if
0
doudalopez Messages postés 19 Statut Membre
 
salut
je fais ce que vous m'avez dit mais ca ne marche pas
0