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

GTK+ avec C & C++ Discussion :

Effectuer un calcul sur un GtkEntry


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut Effectuer un calcul sur un GtkEntry
    Bonjour à tous,

    Donc je vous explique mon problème...
    J'ai dans une fenetre un gtk_entry et un boutton..

    L'utilisateur est senser entre un prix d'achat et lorsqu'il clique sur le bouton, il execute le calcule pour avoir le prix final, et va changer la valeur de mon gtk_entry en y affichant le resultat...

    Seulement le problème est le suivant :
    - cela fonctionne, mais il ne prend pas en compte les chiffre derrière la virgule ( si j'entre 9 ou 9.99 cela me donne le meme resultat)
    - Secondo il me donne une erreur de segmentation dans la console...

    Voici le code et dite moi se que vous en pensser

    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
    void Btn_Calcul_Prix()
    {
    const char *text = NULL;
    double Entre = 0, Calc1 = 0, Result = 0;
     
    text = gtk_entry_get_text(GTK_ENTRY(pEntryWPrix));
    Entre = strtol (text, NULL, 10);
    Calc1 = Entre / 0.6;
    Result = Calc1 * 1.21;
     
    char *Retour;
    sprintf(Retour,"%0.2f",Result);
     
    gtk_entry_set_text(GTK_ENTRY(pEntryWPrix),Retour);
    }

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Surement un problème de police. Pour confirmer essaies de mettre une virgule à la place du point.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Surement un problème de police. Pour confirmer essaies de mettre une virgule à la place du point.
    Sa fait la même choses :s

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Tu utilises mal sprintf (son utilisation est d'ailleurs à bannir autant que possible . Je t'invite à regarder du côté de g_strdup_printf (n'oublie pas de faire un g_free sur la chaîne de caractère renvoyée quand tu n'en as plus besoin).

    strtol renvoie un entier, donc tu demandes explicitement au système de te fournir en entier, ça serait un bug s'il te donnait un nombre flottant Regarde du côté de strtof/strtod plutôt.

    En ce qui concerne les avis sur le code, je n'utiliserais qu'une seule variable flottante pour faire tous les calculs vus que les résultats intermédiaires n'ont pas l'air de t'être utiles.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    Citation Envoyé par teuf13 Voir le message
    Tu utilises mal sprintf (son utilisation est d'ailleurs à bannir autant que possible . Je t'invite à regarder du côté de g_strdup_printf (n'oublie pas de faire un g_free sur la chaîne de caractère renvoyée quand tu n'en as plus besoin).

    strtol renvoie un entier, donc tu demandes explicitement au système de te fournir en entier, ça serait un bug s'il te donnait un nombre flottant Regarde du côté de strtof/strtod plutôt.
    Ok merci je vais regarder a sa...

    Citation Envoyé par teuf13 Voir le message
    En ce qui concerne les avis sur le code, je n'utiliserais qu'une seule variable flottante pour faire tous les calculs vus que les résultats intermédiaires n'ont pas l'air de t'être utiles.
    Sinon jme doute, mais c'etait pour etre plus claire je remet tout en un calcul apres..

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut

    Pourriez vous eventuellement me montrer dans mon vout de code comment je doit utiliser strtod ou strtof car je ne parvien pas a compiler en utilisant ceci.

    Autre problème, j'ai essayer de compiler sur une autre machine... sa compile mais alors la sa calcul plus rien sa me donne une erreur de segmentation???

    Je suis perdu

Discussions similaires

  1. [Débutant] Ouvrir et effectuer des calculs sur un fichier txt
    Par vanniche dans le forum MATLAB
    Réponses: 16
    Dernier message: 08/10/2014, 13h28
  2. Effectuer un calcul sur un champ qui doit être filtrer
    Par lavoiej dans le forum Formules
    Réponses: 0
    Dernier message: 15/04/2010, 11h13
  3. Effectuer des calculs sur Access 07
    Par aldébaranjr dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 25/05/2009, 10h08
  4. Réponses: 5
    Dernier message: 06/07/2007, 18h59
  5. Réponses: 3
    Dernier message: 19/12/2006, 17h43

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