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
Configuration: Windows XP
Internet Explorer 7.0

19 réponses

  1. ibtor Messages postés 2564 Statut Membre 283
     
    t'as essayé de faire quoi pour l'instant ?
    0
  2. 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
    1. 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
  3. doudalopez Messages postés 19 Statut Membre
     
    je ne comprend pas ce que vous m'avez envoyé
    0
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. doudalopez Messages postés 19 Statut Membre
     
    ca ne me permet pas de lire une expression mathematique
    0
  7. 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
  8. 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
  9. ibtor Messages postés 2564 Statut Membre 283
     
    met

    float resultat=N1+N2;

    à l'avant dernière ligne
    0
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. ibtor Messages postés 2564 Statut Membre 283
     
    c'est quoi les messages erreurs ?
    0
  16. doudalopez Messages postés 19 Statut Membre
     
    y'a des erreurs sur mon code que j'arrive pas corriger
    0
    1. 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
  17. doudalopez Messages postés 19 Statut Membre
     
    je l'ai fait c'est le derneir code que j'ai envoyé
    0
    1. 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
  18. doudalopez Messages postés 19 Statut Membre
     
    a chaque fois que je compile ca me fait appui sur une touche pour continuer
    0
  19. 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
  20. doudalopez Messages postés 19 Statut Membre
     
    salut
    je fais ce que vous m'avez dit mais ca ne marche pas
    0