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 :

problème de variable dans une fonction


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 68
    Points : 44
    Points
    44
    Par défaut problème de variable dans une fonction
    J'ai réalisé une fonction toute bête qui calcul l'air d'un rectangle pour m'entrainer, mais la variable "haut" (hauteur) foire. Par contre la largeur joue... Qu'ai-je fais de faux svp



    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
    #include <iostream>
     
     
    double airerectangle (double hauteur, double largeur)
     
    {
        printf ("\ncalcul en cours....largeur %ld hauteur %ld", hauteur,largeur);
        return  hauteur*largeur;
     
    }
     
    int main()
    {
     
    double aire= 0, haut = 0, larg = 0;
    printf ("\nEntrez la largeur de votre rectangle\n");
    scanf ("%ld", &haut);
    printf ("\nEntrez la hauteur de votre rectangle\n");
    scanf ("%ld", &larg);
    printf ("\ndebug....largeur %ld hauteur %ld", haut,larg);
    aire = airerectangle (haut,larg);
    printf ("\nL'aire de votre rectangle vaut %ld",aire);
    system("PAUSE");
    return 0;
    }

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2006
    Messages : 138
    Points : 124
    Points
    124
    Par défaut
    Citation Envoyé par K4trix
    J'ai réalisé une fonction toute bête qui calcul l'air d'un rectangle pour m'entrainer, mais la variable "haut" (hauteur) foire. Par contre la largeur joue... Qu'ai-je fais de faux svp



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    double aire= 0, haut = 0, larg = 0;
    printf ("\nEntrez la largeur de votre rectangle\n");
    scanf ("%ld", &haut);
    printf ("\nEntrez la hauteur de votre rectangle\n");
    scanf ("%ld", &larg);

    C normal que ca marche pas c a cause de tes scanf. En effet quand tu rentre la largeur du rectangle tu presse enter.

    Donc ton premier scanf prend la valeur de la largeur (bizarrement dans scanf c haut ) et le deuxième scanf prend enter.


    Tu as plusieurs solutions :

    fgets ou le doublement des scanf :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    double poubelle
     
    printf ("\nEntrez la largeur de votre rectangle\n");
    scanf ("%ld", &haut);
    scanf ("%ld", &poubelle);
     
    printf ("\nEntrez la hauteur de votre rectangle\n");
    scanf ("%ld", &larg);
    scanf ("%ld", &poubelle);
    "C'est beau toutes vos citations"

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 68
    Points : 44
    Points
    44
    Par défaut
    le doublement de scanf ne change strictement rien, la valeur de la hauteur renvoyée vaut toujours 0, et ainsi l'aire de même.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2006
    Messages : 138
    Points : 124
    Points
    124
    Par défaut
    Citation Envoyé par K4trix

    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
    #include <iostream>
    
    
    double airerectangle (double hauteur, double largeur)
    
    {
        printf ("\ncalcul en cours....largeur %ld hauteur %ld", hauteur,largeur);
        return  hauteur*largeur;
    
    }
    
    int main()
    {
    
    double aire= 0, haut = 0, larg = 0;
    printf ("\nEntrez la largeur de votre rectangle\n");
    scanf ("%ld", &haut);
    printf ("\nEntrez la hauteur de votre rectangle\n");
    scanf ("%ld", &larg);
    printf ("\ndebug....largeur %ld hauteur %ld", haut,larg);
    aire = airerectangle (haut,larg);
    printf ("\nL'aire de votre rectangle vaut %ld",aire);
    system("PAUSE");
    return 0;
    }
    Est ce normal que la hauteur et la largeur soit mélangé dans les printf et les scanf?

    Car quand tu dis que c la hauteur qui te pose probleme c le printf avec hauteur ou le scanf avec hauteur (qui suit le printf demandant la largeur )?
    "C'est beau toutes vos citations"

  5. #5
    Membre averti
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Points : 338
    Points
    338
    Par défaut
    Ton problème vient du format de scanf():
    Tu écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    scanf ("%ld", &haut);
    d désigne un entier.
    Il te faut:

    pour un float et , si mes souvenirs sont bons
    pour un double

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 68
    Points : 44
    Points
    44
    Par défaut
    Voilà le code remis en ordre :

    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
    #include <iostream>
     
     
    double airerectangle (double hauteur, double largeur)
     
    {
        printf ("\ncalcul en cours....largeur %ld hauteur %ld", largeur,hauteur);
        return  hauteur*largeur;
     
    }
     
    int main(int argc, char *argv[])
    {
     
    double aire= 0, haut = 0, larg = 0;
    printf ("\nEntrez la largeur de votre rectangle\n");
    scanf ("%d", &larg);
    printf ("\nEntrez la hauteur de votre rectangle\n");
    scanf ("%d", &haut);
    printf ("\ndebug....largeur %ld hauteur %ld", larg,haut );
    aire = airerectangle (haut,larg);
    printf ("\nL'aire de votre rectangle vaut %ld\n",aire);
    system("PAUSE");
    return 0;
    }
    L'histoire des %d et %f ne change rien étend donné que je rentre des entier pour débuter. sinon voici ce que me renvoie le programme sa vous aidera surement :


    Entrez la largeur de votre rectangle
    4

    Entrez la hauteur de votre rectangle
    5

    debug....largeur 4 hauteur 0
    calcul en cours....largeur 4 hauteur 0
    L'aire de votre rectangle vaut 0
    Appuyez sur une touche pour continuer...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2006
    Messages : 138
    Points : 124
    Points
    124
    Par défaut
    tu devrais inverser l'ordre pour voir si tu a toujours le probleme sur la hauteur ou si le probleme devient la largeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    printf ("\nEntrez la hauteur de votre rectangle\n");
    scanf ("%d", &haut);
    printf ("\nEntrez la largeur de votre rectangle\n");
    scanf ("%d", &larg);
    et si comme tu le dis pour le moment tu n'utilise que des int declare tout en int et sert-en dans les printf et scanf "%d"
    "C'est beau toutes vos citations"

  8. #8
    Membre averti
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Points : 338
    Points
    338
    Par défaut
    La preuve que ce n'est qu'un problème de format de scanf et de printf:
    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
     
    #include <stdio.h>
    int main(int argc, char *argv[])
    {
     
    float aire= 0., haut = 0., larg = 0.;
    printf ("\nEntrez la largeur de votre rectangle\n");
    scanf ("%f", &larg);
    printf ("\nEntrez la hauteur de votre rectangle\n");
    scanf ("%f", &haut);
    printf ("\ndebug....largeur %f hauteur %f", larg,haut );
    aire = haut*larg;
    printf ("\nL'aire de votre rectangle vaut %f\n",aire);
    system("PAUSE");
    return 0;
    }
    marche parfaitement
    alors que ton code me donnait les mêmes résultats que toi.
    J'ai utilisé des floats par flemme de regarder le format d'un double

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 68
    Points : 44
    Points
    44
    Par défaut
    j'ai tout déclaré en int et sa fonctionne parfaitement je comprend plus rien , merci bcp les gas

  10. #10
    Membre averti
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Points : 338
    Points
    338
    Par défaut
    Bien sûr!!! cf. mon post précédent...

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

Discussions similaires

  1. [Excel]Mettre une variable dans une fonction
    Par soad029 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 14/04/2006, 12h00
  2. [PL SQL] Problème avec 'case' dans une fonction
    Par divail dans le forum Oracle
    Réponses: 14
    Dernier message: 13/03/2006, 15h50
  3. [Tableaux] Récuperer variable dans une fonction
    Par amarcil dans le forum Langage
    Réponses: 12
    Dernier message: 12/02/2006, 10h56
  4. Pb de variable dans une fonction :
    Par soad029 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/10/2005, 13h54
  5. [AS2] déclarer des variables dans une fonction
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 12
    Dernier message: 02/08/2005, 12h50

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