IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

math.h ne fonctionne pas - windows


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 46
    Points : 34
    Points
    34
    Par défaut math.h ne fonctionne pas - windows
    bonjour,
    je cherche sur le web, et je ne trouve pas pourquoi Visual Studio 6.0 renvoie une erreur sur math.h.
    eLorsque je compile le code suivant, le compilateur me dit qu'il manque un point-virgule dans math.h, et il ouvre ce logiciel. Voici le petit code,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    #include "Calculatrice.h"
    #include <math.h>
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <string.h>
     
    void Operation::Operation(){
       Nb_Gch = 0; Nb_Drt = 0;
     
       Histo_Op = NULL;
    }
     
    double Operation::Calculer(double n1, char *op, double n2){
    char Plus[2] = "+";
     
    char Moins[2] = "-";
     
    char Mult[2] = "*";
     
    char Div[2] = "/";
     
    char Puis[2] = "^";
     
    char Racine[2] = "r";
     
    char Pour100[2] = "%";
     
    char LogNep[3] = "ln";
     
    char Log10[4] = "log";
     
    if(strcpy(Op, Plus) == 0) return (n1+n2);
     
    else
    if(strcpy(Op, Moins) == 0) return (n1-n2);
    else
    if(strcpy(Op, Mult) == 0) return (n1*n2);
     
    else
    if(strcpy(Op, Div) == 0) return (n1/n2);
     
    else
    if(strcpy(Op, Puis) == 0) return (pow(n1, n2));
     
    else
    if(strcpy(Op, Pour100) == 0) return ((n1*n2)/100);
     
    else
    if(strcpy(Op, Racine) == 0){
       if(n2==2) return (sqrt(n1));
     
       else{
          printf("\nRacine non encore implémetée"); return 0;
       }
    }
     
    else{
    	printf("%s n'est pas un opérateur valide.", op);
     
    	return 0;
    }
    }
    int main(){
    double n1=0, n2=0, resultat=0;
    char op[2];
     
    Operation *Ptr = new Operation;
     
    printf("OPERATION : "); scanf("%lf%s%lf", &n1, op, &n2);
     
    resultat = Ptr->Calculer(n1, op, n2);
    system("cls");
     
    printf("%.2lf %s %.2lf = %.2lf", n1, op, n2, resultat);
     
    delete(Ptr);
     
    printf("\nTapez sur une touche pour quitter le programme."); getch();
    }
    Aviez-vous une idée svp?

    Merci d'avance.

  2. #2
    Membre régulier Avatar de cynique
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 60
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par forumcpp_nono Voir le message
    bonjour,
    je cherche sur le web, et je ne trouve pas pourquoi Visual Studio 6.0 renvoie une erreur sur math.h.
    eLorsque je compile le code suivant, le compilateur me dit qu'il manque un point-virgule dans math.h, et il ouvre ce logiciel. Voici le petit code,
    [Début]
    #include "Calculatrice.h"
    #include <math.h>
    Je crois que tu trouveras l'erreur à la fin de Calculatrice.h...

    Citation Envoyé par forumcpp_nono Voir le message
    double Operation::Calculer(double n1, char *op, double n2){
    char Plus[2] = "+";
    ...
    char Log10[4] = "log";

    if(strcpy(Op, Plus) == 0) return (n1+n2);
    Si tu ne veux pas détruire "op", je recommande strcmp au lieu de strcpy...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 46
    Points : 34
    Points
    34
    Par défaut
    Merci de m'avoir répondu!
    Voici le petit code pour la classe, Calculatrice.h!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    // Calculatrice.h
     
    class Operation{
    double Nb_Gch, Nb_Drt; // Les nombres situés à gauche et à droite de l'opérateur
     
    double Resultat; // Le résultat du calcul
     
    int Nb_Op; // Compteur des opérations
     
    char *Op; // L'opérateur
     
    Operation *Histo_Op; // Liste chaînée, historique des opérations effectuées
     
       public:
    	Operation();
     
    	~Operation(){}
     
    	double calculer(double, char*, double);
     
    	void historique();
    }
    Vous y voyez une erreur?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 35
    Points : 39
    Points
    39
    Par défaut
    Il faut mettre un ';' après l'accolade fermant la déclaration de ta classe (Cynique a fait tout le boulot ).

  5. #5
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Au passage, tes en-têtes ne sont pas bons.
    <math.h> --> <cmath>
    <stdlib.h> --> <cstdlib>
    <iostream.h> --> <iostream>

    voir la FAQ C++ ici

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 46
    Points : 34
    Points
    34
    Par défaut
    Eh bien, merci beaucoup à tous! Il s'agissait effectivement du ';' oublié à la fin de ma classe. Mais pourquoi le compilateur ne fait-il pas de différence entre mon fichier (Calculatrice.h) et le fichier Microsoft math.h! Car, c'est bel et bien math.h qu'il ouvre.
    En tout cas, merci beaucoup pour vos éclaircissements.
    Merci aussi cynique, pour strcmp. J'ai pourtant l'habitude de l'utiliser, mais bon!!!

    Bonne journée à tous!

    Noël

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PyQT] Ne fonctionne pas sous Windows
    Par kedare dans le forum PyQt
    Réponses: 2
    Dernier message: 28/06/2006, 13h47
  2. window.open : "fullscreen" fonctionne pas sous fir
    Par golgauth dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/11/2005, 06h02
  3. Réponses: 4
    Dernier message: 27/09/2005, 22h00
  4. window.resizeTo ne fonctionne pas avec firefox?
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/06/2005, 15h07
  5. [WINDOWS CE]WriteProfileString ne fonctionne pas
    Par protonos dans le forum MFC
    Réponses: 17
    Dernier message: 13/05/2005, 19h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo