Rechercher : dans
Par :

Calculatrice

Dernière réponse le 24 mai 2008 à 20:35:55 doudalopez, le 20 mai 2008 à 21:44:39 
 Signaler ce message aux modérateurs

Bonjour,
qui peut me faire un programme en C qui permet de lire une expression mathematique simple et la calculer

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « calculatrice » dans :
Télécharger Ma Calculatrice Voir Windows propose par défaut une calculatrice avec des fonctions dites scientifiques mais tout de même incomplètes. MaCalculatrice est une calculatrice beaucoup plus complète et évoluée. C'est une calculatrice graphique et comprend divers modules...
Google - Fonction calculatrice Voir Google dispose d'une calculatrice intégrée. Pour l'utiliser, il suffit simplement d'entrer une expression dans le champ de saisie et de lancer la recherche ! Cette fonction est aussi accessible à partir de la barre Google ou des navigateurs...
Les applications GNOME VoirLes applications du bureau GNOME Introduction I. Accessibilité Clavier visuel Dasher Loupe et lecteur d'écran II. Accessoires Buoh Online Comics Reader Calculatrice CHM Viewer Dictionnaire Editeur de menu Alaca
Windows 7 - Utilitaires VoirLES AUTRES UTILITAIRES Calculatrice, tableau de saisie mathématique et pense-bête : trois utilitaires supplémentaires, bien connus des utilisateurs de Windows ou tout nouveau, mais qui s’avèrent très pratiques au quotidien. La calculatrice Déjà...

1

ibtor, le 20 mai 2008 à 21:46:01

T'as essayé de faire quoi pour l'instant ? Contre les problèmes de virus sur windows ; y'a Linux
Contre les problèmes rencontrés sur msn ; aMsn

Répondre à ibtor

2

doudalopez, le 20 mai 2008 à 21:56:39

#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é

Répondre à doudalopez

3

ibtor, le 20 mai 2008 à 22:06:17

Float resultat ;
resultat = N1 + N2

printf("la somme de %f et de %f donne %f",N1, N2,resultat) Contre les problèmes de virus sur windows ; y'a Linux
Contre les problèmes rencontrés sur msn ; aMsn

Répondre à ibtor

4

doudalopez, le 20 mai 2008 à 22:14:00

Je ne comprend pas ce que vous m'avez envoyé

Répondre à doudalopez

5

ibtor, le 20 mai 2008 à 22:19:37

Rajoute cequ'il y'a en gras dans ton code

ça fait une addition de N1 + N2 Contre les problèmes de virus sur windows ; y'a Linux
Contre les problèmes rencontrés sur msn ; aMsn

Répondre à ibtor

6

doudalopez, le 20 mai 2008 à 22:22:58

Ca ne me permet pas de lire une expression mathematique

Répondre à doudalopez

7

ibtor, le 20 mai 2008 à 22:37:19

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 Contre les problèmes de virus sur windows ; y'a Linux
Contre les problèmes rencontrés sur msn ; aMsn

Répondre à ibtor

8

doudalopez, le 20 mai 2008 à 22:52:01

#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

Répondre à doudalopez

9

ibtor, le 20 mai 2008 à 22:54:53

Met

float resultat=N1+N2;

à l'avant dernière ligne Contre les problèmes de virus sur windows ; y'a Linux
Contre les problèmes rencontrés sur msn ; aMsn

Répondre à ibtor

10

vignemail1, le 20 mai 2008 à 23:14:48

#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
Membre contributeur
Spécialisé réseaux, webmastering, programmation

Répondre à vignemail1

11

doudalopez, le 20 mai 2008 à 23:41:30

#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

Répondre à doudalopez

12

doudalopez, le 22 mai 2008 à 15:59:02

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

Répondre à doudalopez

13

doudalopez, le 23 mai 2008 à 21:30:11

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;
}

Répondre à doudalopez

14

doudalopez, le 23 mai 2008 à 21:32:35

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;
}

Répondre à doudalopez

15

ibtor, le 23 mai 2008 à 22:51:26

C'est quoi les messages erreurs ? ça c'est MA signature, alors copitez pas !!!

Répondre à ibtor

16

doudalopez, le 23 mai 2008 à 22:54:49

Y'a des erreurs sur mon code que j'arrive pas corriger

Répondre à doudalopez

17

ibtor, le 23 mai 2008 à 22:56:07

1/si y'a des erreurs à la compil, publie les
2/qu'est ce qui marche pas PRECISEMMENT ? ça c'est MA signature, alors copitez pas !!!

Répondre à ibtor

18

doudalopez, le 23 mai 2008 à 22:58:17

Je l'ai fait c'est le derneir code que j'ai envoyé

Répondre à doudalopez

19

ibtor, le 23 mai 2008 à 22:59:43

Bon je vais essayer de faire le plus simple possible :

QUAND TU LANCES LE PROGRAMME, QU'EST CE QUI MARCHE PAS ??? ça c'est MA signature, alors copitez pas !!!

Répondre à ibtor

20

doudalopez, le 23 mai 2008 à 23:02:49

A chaque fois que je compile ca me fait appui sur une touche pour continuer

Répondre à doudalopez

21

ibtor, le 23 mai 2008 à 23:06:32

Dans ton main, tu n'as pas de printf ni de scanf indiquant (saisir le calcul...)

à placer juste avant ton premier if ça c'est MA signature, alors copitez pas !!!

Répondre à ibtor

22

 doudalopez, le 24 mai 2008 à 20:35:55

Salut
je fais ce que vous m'avez dit mais ca ne marche pas

Répondre à doudalopez