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 :

Fonction void fct_affichage_resultat


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Points : 16
    Points
    16
    Par défaut Fonction void fct_affichage_resultat
    Bonjour,

    Voici une fonction que j'ai créer, mais à la compilation
    ça bloque :

    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
    81
    82
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
     
    double fct_somme(double a, double b)
    {
        return (a + b);
    }
     
    double fct_multiplidelasomme(double somme, double c)
    {
        return (somme*c);
    }
     
    double fct_divdelamultipli(double multiplication, double d)
    {
        return (multiplication/d);
    }
     
    void fct_affichage_a()
    {
        printf("\nEntree la valeur a =");
    }
     
    void fct_affichage_b()
    {
        printf("\nEntree la valeur b =");
    }
     
    void fct_affichage_c()
    {
        printf("\nEntree la valeur c =");
    }
     
    void fct_affichage_d()
    {
        printf("\nEntree la valeur d =");
    }
     
    void fct_affichage_resultat(double somme, double multiplication, double division)  
    {
        printf("\n a + b = somme = %f\n", somme);
        printf("\n somme * c = multiplication = %f\n", multiplication);
        printf("\n multiplication / d = %f\n", division);
    }
     
    int main()
    {
        double a=0, b=0, c=0, d=0;
        double somme=0, multiplication=0, division=0;
        double affichage_resultat=0;
     
        fct_affichage_a(a);
        scanf("%lf", &a);
     
        fflush(stdin);
     
        fct_affichage_b(b);
        scanf("%lf", &b);
     
        fflush(stdin);
     
        fct_affichage_c(c);
        scanf("%lf", &c);
     
        fflush(stdin);
     
        fct_affichage_d(d);
        scanf("%lf", &d);
     
        fflush(stdin);
     
        somme = fct_somme(a, b);
        multiplication = fct_multiplidelasomme(somme, c);
        division = fct_divdelamultipli(multiplication, d);
     
        affichage_resultat = fct_affichage_resultat(somme, multiplication, division);
     
        return 0;
     
    }
    Voici le message du debugger :

    error: void value not ignored as it ought to be

    Je sais que le problème vient de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void fct_affichage_resultat(double somme, double multiplication, double division)  /*utiliser des pointeurs sinons ca ne marche pas*/
    {
        printf("\n a + b = somme = %f\n", somme);
        printf("\n somme * c = multiplication = %f\n", multiplication);
        printf("\n multiplication / d = %f\n", division);
    }
    Dois-je utiliser des pointeurs ? Si oui, ou ?

    Merci d'avance pour votre réponse.

    Kumral

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Tu as défini ta fonction fct_affichage_resultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void fct_affichage_resultat(double somme, double multiplication, double division)  
    {
        printf("\n a + b = somme = %f\n", somme);
        printf("\n somme * c = multiplication = %f\n", multiplication);
        printf("\n multiplication / d = %f\n", division);
    }
    qui ne renvoie donc aucune valeur, ce qui va à l'encontre de l'utilisation que tu en fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    affichage_resultat = fct_affichage_resultat(somme, multiplication, division);
    Remarques :
    Dernière modification par Invité ; 18/05/2014 à 23h18.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    Je n'ai pas compilé ton code mais je vois 3 choses qui me dérangent fortement:
    • Tes procédures fct_affichage_a, fct_affichage_b, fct_affichage_c ne servent à rien. Pourquoi pas 1 seule procédure avec un type char en paramètre?
    • Tes fonctions fct_somme, fct_multiplidelasomme, fct_divdelamultipli ne servent à rien. Pourquoi pas 1 seule fonction avec un type enum en paramètre?
    • Tous tes appels de fct_affichage_a, fct_affichage_b, fct_affichage_c sont fait avec un paramètre. Ce sont des procédures qui prennent void

  4. #4
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Bonsoir,

    Tu as défini ta fonction fct_affichage_resultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void fct_affichage_resultat(double somme, double multiplication, double division)  
    {
        printf("\n a + b = somme = %f\n", somme);
        printf("\n somme * c = multiplication = %f\n", multiplication);
        printf("\n multiplication / d = %f\n", division);
    }
    qui ne renvoie donc aucune valeur, ce qui va à l'encontre de l'utilisation que tu en fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    affichage_resultat = fct_affichage_resultat(somme, multiplication, division);
    Remarques :
    Oui, très juste.

    Voici ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    double fct_affichage_resultat(double somme, double multiplication, double division)
    {
        printf("\n a + b = somme = %f\n", somme);
        printf("\n somme * c = multiplication = %f\n", multiplication);
        printf("\n multiplication / d = %f\n", division);
     
        return somme,multiplication,division;
    }
    Je renvoie somme, multiplication et division.

    Le résultat s'affiche correctement.

    Merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    Attention, tu ne peux retourner qu'une seule valeur.
    Si tu souhaites en retourner plusieurs, tu as au moins deux solutions :
    • utiliser des pointeurs en paramètres de la fonction ;
    • renvoyer une structure regroupant les trois.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Pour la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    double fct_affichage_resultat(double somme, double multiplication, double division)
    {
        printf("\n a + b = somme = %f\n", somme);
        printf("\n somme * c = multiplication = %f\n", multiplication);
        printf("\n multiplication / d = %f\n", division);
     
        return somme,multiplication,division;
    }
    Que ce soit la somme, la multiplication ou la division, tu n'effectues aucune action dessus à part les afficher. Il n'y a aucun changement de valeur pour les trois.

    Dès lors, pourquoi vouloir retourner la somme, la multiplication et la division ?
    Sachant que tu les entres déjà toi en paramètre, donc que tu les connais.


    Avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    affichage_resultat = fct_affichage_resultat(somme, multiplication, division);
    Que veux-tu faire ?
    Que cherches-tu à récupérer dans la variable affichage_resultat ?
    Dernière modification par Invité ; 22/05/2014 à 15h39.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    @archMqx. Ce que je souhaite faire c'est de reprendre les printf dans une fonction void
    et ensuite faire un appelle de cette fonction dans le main.

    @foetus : J'ai essayé mais sans résultat.

    Pourrais-tu m'aider à faire une fonction pour chaque ?

Discussions similaires

  1. la fonction:void gtk_table_attach_defaults. . .
    Par sizixe dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 27/12/2009, 15h54
  2. Problèmes avec la fonction void
    Par dj-daweed dans le forum Débuter
    Réponses: 5
    Dernier message: 03/12/2008, 15h41
  3. Réponses: 4
    Dernier message: 11/08/2008, 14h49
  4. différence entre fonction() et fonction(void)
    Par ram-0000 dans le forum C++
    Réponses: 8
    Dernier message: 07/11/2007, 17h31
  5. utiliser une fonction VOID pour des blocs relationnels ?
    Par ctobini dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 11/09/2006, 16h16

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