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 :

erreur de programme


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 102
    Par défaut erreur de programme
    bonjour a tous

    Ne me demander pas de mettre mon code car il est tres tres long

    J'ai donc fait (pour etre comprehensible) un petit programme qui montre mon probleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int main()
    {
    char *dec[20];
    float y;
     
    dec[3]="3.5";
     
    y=3.14*(dec[3]);
     
    printf("%f",y);
     
     
    return 0;
    }

    erreur: opérandes invalides pour le binaire *


    alors comment faire sachant que je ne peut changer la declaration de mes variables

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Salut, c'est normal, dec[3] est une string et tu la mutiplie par un double. Convertit ta string en double à l'aide de strtod.

    Voici un code qui marche

    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
     
    #include<stdlib.h>
    #include<stdio.h>
     
    int main(void)
    {
    char *dec[20];
    float y;
     
    dec[3]="3.5";
     
    char * p=dec[3];
    double aux=strtod(p,&p);
     
    //y=3.14*(dec[3]);
    y=3.14*aux;
     
    printf("%f",y);
     
     
    return 0;
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 102
    Par défaut
    merci beaucoup je crois que ca va beaucoup m'aider

    s'il y a d'autres solutions n'hesiter pas je suis preneur

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    si ton pb est résolu n'hésite pas à mettre la balise RESOLU

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 102
    Par défaut
    j'aurais une autre question

    alors voila j'ai cree une fonction replace qui s'utilise pour les pointeurs

    cependant j'ai envie de l'utiliser pour un float voici un exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    float angle=3,14;
     
    angle=replace(angle,",",".");

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Re, je crains que 3,14 ne compile pas...
    Pour que ton code compile il faut que 3,14 soit dans une string => "3,14".
    En C, si je ne m'abuse, c'est un point qu'il faut mettre

    double angle=3.14 compilera.

    Donc, si tu as

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char * s="3,14"; // ici c'est une virgule
    à l'aide de strchr tu peux remplacer la virgule par un point

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #include<string.h>
    char s[]="3,14";
    char * q=strchr(s,',');
    s[q-s]='.';
    printf("s = %s\n",s);

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Citation Envoyé par acik59
    j'aurais une autre question

    alors voila j'ai cree une fonction replace qui s'utilise pour les pointeurs

    cependant j'ai envie de l'utiliser pour un float voici un exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    float angle=3,14;
     
    angle=replace(angle,",",".");
    ah au fait, dans ta fonction replace(), en fait, tu veux modifier ton argument angle... il faut donc que tu lui donnes un pointeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void replace(double *,int,int);
    et tu l'utiliseras de la manière suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    double ange=3,14; /* ceci ne compilera pas car il faut un point et non une virgule, cf mon post précédent */
    replace(&angle,',','.');

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par acik59
    Ne me demander pas de mettre mon code car il est tres tres long

    J'ai donc fait (pour etre comprehensible) un petit programme qui montre mon probleme
    C'est très exactement la bonne méthode, et c'est d'ailleurs une technique de mise au point reconnue et pratiquée.

    Tu peux faire ceci :
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main (void)
    {
       char *dec[20];
       float y;
     
       dec[3] = (char *) "3.5";
       {
          double x = strtod (dec[3], NULL);
          y = 3.14 * x;
       }
       printf ("%f", y);
     
       return 0;
    }
    Mais la bonne façon de faire est cela :
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main (void)
    {
       char const *dec[20];
       double y;
     
       dec[3] = "3.5";
       {
          double x = strtod (dec[3], NULL);
          y = 3.14 * x;
       }
       printf ("%f\n", y);
     
       return 0;
    }

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

Discussions similaires

  1. erreur de programme en C
    Par Vestigo dans le forum Débuter
    Réponses: 20
    Dernier message: 02/09/2007, 21h05
  2. pb de memoire ou erreur de programmation?
    Par nina2007 dans le forum Linux
    Réponses: 14
    Dernier message: 14/08/2007, 07h28
  3. Erreur de programmation d'un DTS
    Par ninsekh dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 13/08/2007, 22h08
  4. erreur dans programme java sur des vecteurs 3D
    Par HighSchool2005 dans le forum Langage
    Réponses: 18
    Dernier message: 15/02/2007, 16h38
  5. erreur compilation programme
    Par auxisteff dans le forum C
    Réponses: 8
    Dernier message: 09/02/2007, 21h27

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