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 :

Pointeurs, fonctions pour calculette


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Responsable ingénierie des logiciels - Recherche alternance
    Inscrit en
    Novembre 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable ingénierie des logiciels - Recherche alternance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 68
    Points : 92
    Points
    92
    Par défaut Pointeurs, fonctions pour calculette
    Bonjour, je fais appel à votre aide car je créer actuellement un programme de calculatrice en C, la contrainte étant d'utiliser des pointeurs et différentes fonctions. Mon programme SEGFAULT, en entrant dans un switch ou je fais appel à ces mêmes fonctions.

    Sans forcément copier tout mon programme, je vous montre les principaux éléments essentiel à mon avis à la compréhension.
    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
    /** Déclaration des variables et pointeurs **/
    int *nbr1 = NULL;
    nbr1 = malloc(sizeof(int));
    int *nbr2 = NULL;
    nbr2 = malloc(sizeof(int));
    int *resultat;
    resultat = malloc(sizeof(int));
     
    /** Boucle switch pour appeller mes fonctions **/
    switch (choix2)
            {
            case 1:
                addition (resultat, nbr1, nbr2);
                printf("%d", resultat);
                break;
     
            case 2:
                soustraction (resultat, nbr1, nbr2);
                printf("\n  \4    ----     %d - %d = %d      ---- \n", nbr1, nbr2, resultat);
                break;
     
            case 3:
                multiplication (resultat, nbr1, nbr2);
                break;
     
     
    /** Dans mon calcul.c voici la déclaration de ces fonctions **/
    void addition (int resultat, int *nbr1, int *nbr2){
            resultat = *nbr1 + *nbr2;
            }
     
    int soustraction (int resultat, int *nbr1, int *nbr2){
            resultat = (*nbr1) - (*nbr2);
            }
    void multiplication (int *resultat, int *nbr1, int *nbr2){
            (*resultat) = (*nbr1) * (*nbr2);
            }
     
     
    /** Prototype (header) **/
    void addition(int resultat, int *nbr1, int *nbr2);
    int soustraction (int *nbr1, int *nbr2, int resultat);
    void multiplication (int *resultat, int *nbr1, int *nbr2);
    Vous pourrez voir que j'ai essayer de plusieurs manière différentes, sans succès .
    Je vous remercie d'avance pour votre aide.

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

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

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Bonjour.

    Dans les fonctions addition(); et soustraction(); le paramètre resultat doit être déclaré en tant que pointeur et non en tant que variable.

    Petite question au passage : est-ce une contrainte de l'exercice d'allouer dans le tas tes différentes variables ?

  3. #3
    Membre régulier
    Homme Profil pro
    Responsable ingénierie des logiciels - Recherche alternance
    Inscrit en
    Novembre 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable ingénierie des logiciels - Recherche alternance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 68
    Points : 92
    Points
    92
    Par défaut
    Merci de ton aide, cependant cela ne marche toujours pas.

    ps : le fait d'allouer mes variables ne fait pas partie de la contraintes, cependant je ne pense pas que ça soit l'origine du problème.
    Mais encore je n'en suis pas sûr. Je précise que je libère l'espace mémoires utilisé avec free dans mon programme.

    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
     
        /** Tant que choix1 différent de 1 ou 2, on recommence **/
        while (choix1 != 1 && choix1 != 2) {
            printf("\n  !!! ERROR !!! Choisissez une fonction valide \2 \n\n\n");
            printf("\n\n Souhaitez-vous toujours utiliser la belle calculatrice ?\n Ou partir ? \n\n 1: Rester et Calculer \n 2: Exit \n\n");
            scanf ("%d", &choix1);
            }
     
                /** Quitte si choix1 égal à 2 **/
                if (choix1 == 2){ // Vérification de la demande de l'utilisateur pour, rester ou quitter //
                    free(nbr1);
                    free(nbr2);
                    free(resultat);
                    printf("\n    Sayonara !! \2 \n\n");
                    return EXIT_SUCCESS;
                    }

    Pour revenir à l'histoire des pointeurs, j'ai essayé de ne pas déclarer la variable résultat en tant que pointeur (sans succès encore une fois).
    Je suis pas sûr que les modérateurs apprécieront, mais étant donné que je penche dessus depuis toute la journée, que j'ai l'impression de ne plus rien comprendre et surtout que l'erreur peut venir de n'importe où; je me permet de joindre mes 3 fichiers, car si j'indique par bout de code on peut y passer la soirée .

    Fichier main.c :
    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    #include "calcul.h"
     
    int main()
    {
    int choix1;
    int choix2;
     
    int *nbr1 = NULL;
    nbr1 = malloc(sizeof(int));
    int *nbr2 = NULL;
    nbr2 = malloc(sizeof(int));
    int *resultat;
    resultat = malloc(sizeof(int));
     
        printf(" Bienvenue Dans La Calculatrice !! \n");
     
        do {
                /** Demande la confirmation de l'utilisateur de rester ou de quitter **/
        printf("\n\n Souhaitez-vous toujours utiliser la belle calculatrice ?\n Ou partir ? \n\n 1: Rester et Calculer \n 2: Exit \n\n");
        scanf ("%d", &choix1);
     
        /** Tant que choix1 différent de 1 ou 2, on recommence **/
        while (choix1 != 1 && choix1 != 2) {
            printf("\n  !!! ERROR !!! Choisissez une fonction valide \2 \n\n\n");
            printf("\n\n Souhaitez-vous toujours utiliser la belle calculatrice ?\n Ou partir ? \n\n 1: Rester et Calculer \n 2: Exit \n\n");
            scanf ("%d", &choix1);
            }
     
                /** Quitte si choix1 égal à 2 **/
                if (choix1 == 2){ // Vérification de la demande de l'utilisateur pour, rester ou quitter //
                    free(nbr1);
                    free(nbr2);
                    free(resultat);
                    printf("\n    Sayonara !! \2 \n\n");
                    return EXIT_SUCCESS;
                    }
     
     
        printf("\n Choisissez Le Calcul A Effectuer : \n");
        // Menu du programme de calcul //
     
     
        /** Menu choisir opération **/
        printf("\n   1: \4 \4 Addition \1\n   2: \4 \4 Soustraction \1\n   3: \4 \4 Multiplication \1\n   4: \4 \4 Division \1\n   5: \4 \4 Modulo \1\n   6: \4 \4 HELP \1 \n\n");
        scanf ("%d", &choix2);
     
            /** Tant que choix2 invalide, on recommence **/
            while (choix2 == 0 || choix2 >= 7){
                printf("\n  !!! ERROR !!! Choisissez une fonction valide \2 \n\n\n");
                printf("\n   1: \4 \4 Addition \1\n   2: \4 \4 Soustraction \1\n   3: \4 \4 Multiplication \1\n   4: \4 \4 Division \1\n   5: \4 \4 Modulo \1\n   6: \4 \4 HELP \1 \n\n");
                scanf ("%d", &choix2);
                } /** Fin du While **/
     
     
            /** Début de la saisie des différentes valeurs si choix différents de HELP **/
     
                if(choix2 != 6){
                    printf("\n Entrez un nombre\n\n");
                    scanf("%d" , &nbr1);
                    printf("\n Entrez un deuxieme nombre\n\n");
                    scanf("%d", &nbr2);}
     
     
     
            switch (choix2)
            {
            case 1:
                addition (resultat, nbr1, nbr2);
                printf("%d", resultat);
                break;
     
            case 2:
                soustraction (resultat, nbr1, nbr2);
                printf("\n  \4    ----     %d - %d = %d      ---- \n", nbr1, nbr2, resultat);
                break;
     
            case 3:
                multiplication (resultat, nbr1, nbr2);
                break;
     
            case 4:
                division (nbr1, nbr2, resultat);
                printf("\n  \4    ----     %d / %d = %d      ---- \n", nbr1, nbr2, resultat);
                break;
     
            case 5:
                modulo (nbr1, nbr2, resultat);
                printf("\n  \4    ----     %d % %d = %d      ---- \n", nbr1, nbr2, resultat);
                break;
     
            case 6: /** HELP **/
                    printf("\n\n Dans ce programme de calculatrice vous ne pouvez calculer que 2 nombres a\n la fois. \n Pour cela, vous disposez de deux menu : \n\n 1- Le premier vous permet de quitter aisement le programme en entrant la\n touche approprie, dans ce cas il s'agit de la touche (2),\n Et inversement si vous souhaitez continuez votre utilisation (1). \n\n 2- Le deuxieme menu vous demande de choisir entre differents moyen de calcul,\n validez votre choix de la meme maniere que le menu precedent. \n\n Quand vous aurez valider votre mode de calcul souhaite, le programme vous\n demandera de saisir de valider deux valeurs pour effecter le calcul désire. \n Une fois ceci fait, vous serez en mesure de connaitre le resultat de votre\n operation. \n A partir de la, recommencez cette methode aussi longtemps que necessaire. \n\n\n Sachez que si vous rentrer une valeur incorrecte dans les menus, le programme\n vous permettra toujours de recommencer tant que le choix reste invalide. \n\n La societe G&B Technologies vous souhaite une agreable utilisation\n de ce programme, et vous invite a decouvrir de nouvelles applications\n sur son site web :\n <a href="https://g&btechnologies/nouveautes.php" target="_blank">https://g&btechnologies/nouveautes.php</a> \n\n Createur : \n Guillaume BONHOMMEAU - Etudiant a l'Exia CESI de St-Nazaire - France\n \4 \4 \4 La Belle Calculatrice -- Copyright@2014 -- Tous Droits Reserves \4 \4 \4\n\n\n");
                    break;
     
            default : /** Si jamais l'utilisateur parviens à entrer autre chose de non valide **/
                printf("\n  !!! ERROR !!! Choisissez une fonction valide \2 \n\n\n");
     
                }
     
            printf("Resultat : %d\n", *resultat);
     
     
        } while (choix1 != 2);
     
        return EXIT_SUCCESS;
    }
    Fichier calcul.c :
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "calcul.h"
     
    void addition (int *resultat, int *nbr1, int *nbr2){
            resultat = *nbr1 + *nbr2;
            }
    int soustraction ( int *resultat, int *nbr1, int *nbr2){
            resultat = (*nbr1) - (*nbr2);
            }
    void multiplication (int *resultat, int *nbr1, int *nbr2){
            (*resultat) = (*nbr1) * (*nbr2);
            }
    int division (int *nbr1, int *nbr2, int resultat){
            resultat = (*nbr1) / (*nbr2);
            }
    int modulo (int *nbr1, int *nbr2, int resultat){
            resultat = (*nbr1) % (*nbr2);
            }

    Fichier calcul.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
     
    #ifndef __include_fichier_h__
    #define __include_fichier_h__
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    void addition(int *resultat, int *nbr1, int *nbr2);
    int soustraction (int *resultat, int *nbr1, int *nbr2);
    void multiplication (int *resultat, int *nbr1, int *nbr2);
    int division (int *nbr1, int *nbr2, int resultat);
    int modulo (int *nbr1, int *nbr2, int resultat);
     
     
    #endif /* #ifndef __include_fichier_h__ */
    Si dans le switch mes conditions ne sont pas toutes les mêmes c'est justement parce que je testé beaucoup de possibilités.
    Encore désolé pour la longueur du message , mais aussi merci de m'aider .

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

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

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Avancons par petits pas .

    La fonction scanf(); attend un pointeur sur une variable. Tu lui transmets **nbr1 et non *nbr1 (idem pour nbr2).

    Pourquoi la fonction soustraction(); renvoie un int ?

  5. #5
    Membre régulier
    Homme Profil pro
    Responsable ingénierie des logiciels - Recherche alternance
    Inscrit en
    Novembre 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable ingénierie des logiciels - Recherche alternance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 68
    Points : 92
    Points
    92
    Par défaut
    En effet, je viens de changer la fonction scanf() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                if(choix2 != 6){
                    printf("\n Entrez un nombre\n\n");
                    scanf("%d" , *nbr1);
                    printf("\n Entrez un deuxieme nombre\n\n");
                    scanf("%d", *nbr2);}
    Cependant ça ne marche toujours pas. La saisie des nombres fonctionne comme toujours, mais au moment d'afficher le résultat le programme plante.

    Pour ce qui est du type int de la fonction soustraction(); je dois bien avouer que je ne sais plus trop qu'elle type de fonction utilisé dans ce cas précis, pendant un moment je pensais que utilisé un void résoudrais mes problèmes ... mais bon, honnêtement je besoin d'un nouveau regard la dessus, si tu étais à ma place qu'elle type de fonction utiliserais tu ? et pourquoi ?

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

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

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Pour ce qui est du type de fonction voila l'idée générale.

    La fonction doit-elle retournée une ou plusieurs informations ?

    Si une seule information est à retourner alors elle renvoie cette information par l'intermédiaire d'un return;. Dans le cas contraire on utilise les pointeurs transmis en paramètre.

    Une autre question à se poser. Les paramètres transmis peuvent-ils être modifiés à l'interieur de celle-ci. Si ce n'est pas le cas on utilise le mot réservé const devant leur déclaration. Ainsi, si on fait "une fausse manip" le compilateur va hurler .

    Donc pour la fonction soustraction(); je ferais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int soustraction (const int nbr1, const nbr2);
    Si la transmission par pointeur est obligatoire (libellé de l'exercice) alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void soustraction(int *resultat, const int nbr1, const int nbr2);

    Maintenant pour le scanf(); nbr1 et nbr2 sont déjà des pointeurs. l'* est de trop il me semble ...

  7. #7
    Membre régulier
    Homme Profil pro
    Responsable ingénierie des logiciels - Recherche alternance
    Inscrit en
    Novembre 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable ingénierie des logiciels - Recherche alternance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 68
    Points : 92
    Points
    92
    Par défaut
    Mon dieu qu'est-ce que ça peut faire du bien ! Merci beaucoup beaucoup beaucoup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     for (i=0; i<=99; i++){
    printf("\n   \4 MERCI BEAUCOUP Gerald3D !!!  \1\1\1");
    }
    return bonheur=100000000;
    Bref, tu m'a compris ... Mais du coup, ceci confirme l'hypothèse comme quoi je suis le roi des erreurs à la *** (tu m'a compris là aussi ) .
    J'ai perdu une journée à cause d'un vieux opérateur bit à bit "&" ...
    Et vu que je suis sur windows (code sur CodeBlocks), je peux toujours rêver pour que le débugger m'aide ...

    Tes conseils m'ont été très utile, y compris ceux sur les fonctions, portent à réflexion.
    Je vais mettre mon programme correct au complet pour de futur intéressé. Bonne chance pour la suite et à plus sur le forum !!


    Fichier main.c :
    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    #include "calcul.h"
     
    int main()
    {
    int choix1;
    int choix2;
     
    int *nbr1 = NULL;
    nbr1 = malloc(sizeof(int));
    int *nbr2 = NULL;
    nbr2 = malloc(sizeof(int));
    int *resultat;
    resultat = malloc(sizeof(int));
     
        printf(" Bienvenue Dans La Calculatrice !! \n");
     
        do {
                /** Demande la confirmation de l'utilisateur de rester ou de quitter **/
        printf("\n\n Souhaitez-vous toujours utiliser la belle calculatrice ?\n Ou partir ? \n\n 1: Rester et Calculer \n 2: Exit \n\n");
        scanf ("%d", &choix1);
     
        /** Tant que choix1 différent de 1 ou 2, on recommence **/
        while (choix1 != 1 && choix1 != 2) {
            printf("\n  !!! ERROR !!! Choisissez une fonction valide \2 \n\n\n");
            printf("\n\n Souhaitez-vous toujours utiliser la belle calculatrice ?\n Ou partir ? \n\n 1: Rester et Calculer \n 2: Exit \n\n");
            scanf ("%d", &choix1);
            }
     
                /** Quitte si choix1 égal à 2 **/
                if (choix1 == 2){ // Vérification de la demande de l'utilisateur pour, rester ou quitter //
                    free(nbr1);
                    free(nbr2);
                    free(resultat);
                    printf("\n    Sayonara !! \2 \n\n");
                    return EXIT_SUCCESS;
                    }
     
     
        printf("\n Choisissez Le Calcul A Effectuer : \n");
        // Menu du programme de calcul //
     
     
        /** Menu choisir opération **/
        printf("\n   1: \4 \4 Addition \1\n   2: \4 \4 Soustraction \1\n   3: \4 \4 Multiplication \1\n   4: \4 \4 Division \1\n   5: \4 \4 Modulo \1\n   6: \4 \4 HELP \1 \n\n");
        scanf ("%d", &choix2);
     
            /** Tant que choix2 invalide, on recommence **/
            while (choix2 == 0 || choix2 >= 7){
                printf("\n  !!! ERROR !!! Choisissez une fonction valide \2 \n\n\n");
                printf("\n   1: \4 \4 Addition \1\n   2: \4 \4 Soustraction \1\n   3: \4 \4 Multiplication \1\n   4: \4 \4 Division \1\n   5: \4 \4 Modulo \1\n   6: \4 \4 HELP \1 \n\n");
                scanf ("%d", &choix2);
                } /** Fin du While **/
     
     
            /** Début de la saisie des différentes valeurs si choix différents de HELP **/
     
                if(choix2 != 6){
                    printf("\n Entrez un nombre\n\n");
                    scanf("%d" , nbr1);
                    printf("\n Entrez un deuxieme nombre\n\n");
                    scanf("%d", nbr2);}
     
     
     
            switch (choix2)
            {
            case 1:
                addition (resultat, nbr1, nbr2);
                printf("\n  \4   %d + %d = %d     \1\n", *nbr1, *nbr2, *resultat);
                break;
     
            case 2:
                soustraction (resultat, nbr1, nbr2);
                printf("\n  \4   %d - %d = %d     \1\n", *nbr1, *nbr2, *resultat);
                break;
     
            case 3:
                multiplication (resultat, nbr1, nbr2);
                printf("\n  \4   %d * %d = %d     \1\n", *nbr1, *nbr2, *resultat);
                break;
     
            case 4:
                division (resultat, nbr1, nbr2);
                printf("\n  \4   %d / %d = %d     \1\n", *nbr1, *nbr2, *resultat);
                break;
     
            case 5:
                modulo (resultat, nbr1, nbr2);
                printf("\n  \4   %d %% %d = %d     \1\n", *nbr1, *nbr2, *resultat);
                break;
     
            case 6: /** HELP **/
                    printf("\n\n Dans ce programme de calculatrice vous ne pouvez calculer que 2 nombres a\n la fois. \n Pour cela, vous disposez de deux menu : \n\n 1- Le premier vous permet de quitter aisement le programme en entrant la\n touche approprie, dans ce cas il s'agit de la touche (2),\n Et inversement si vous souhaitez continuez votre utilisation (1). \n\n 2- Le deuxieme menu vous demande de choisir entre differents moyen de calcul,\n validez votre choix de la meme maniere que le menu precedent. \n\n Quand vous aurez valider votre mode de calcul souhaite, le programme vous\n demandera de saisir de valider deux valeurs pour effecter le calcul désire. \n Une fois ceci fait, vous serez en mesure de connaitre le resultat de votre\n operation. \n A partir de la, recommencez cette methode aussi longtemps que necessaire. \n\n\n Sachez que si vous rentrer une valeur incorrecte dans les menus, le programme\n vous permettra toujours de recommencer tant que le choix reste invalide. \n\n La societe G&B Technologies vous souhaite une agreable utilisation\n de ce programme, et vous invite a decouvrir de nouvelles applications\n sur son site web :\n https://g&btechnologies/nouveautes.php \n\n Createur : \n Guillaume BONHOMMEAU - Etudiant a l'Exia CESI de St-Nazaire - France\n \4 \4 \4 La Belle Calculatrice -- Copyright@2014 -- Tous Droits Reserves \4 \4 \4\n\n\n");
                    break;
     
            default : /** Si jamais l'utilisateur parviens à entrer autre chose de non valide **/
                printf("\n  !!! ERROR !!! Choisissez une fonction valide \2 \n\n\n");
     
                }
     
     
        } while (choix1 != 2);
     
        return EXIT_SUCCESS;
    }
    Fichier calcul.c :
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "calcul.h"
     
    void addition (int *resultat, int *nbr1, int *nbr2){
            *resultat = *nbr1 + *nbr2;
            }
    int soustraction ( int *resultat, int *nbr1, int *nbr2){
            *resultat = (*nbr1) - (*nbr2);
            }
    void multiplication (int *resultat, int *nbr1, int *nbr2){
            (*resultat) = (*nbr1) * (*nbr2);
            }
    int division (int *resultat, int *nbr1, int *nbr2){
            *resultat = (*nbr1) / (*nbr2);
            }
    int modulo (int *resultat, int *nbr1, int *nbr2){
            *resultat = (*nbr1) % (*nbr2);
            }

    Fichier calcul.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
     
    #ifndef __include_fichier_h__
    #define __include_fichier_h__
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    void addition(int *resultat, int *nbr1, int *nbr2);
    int soustraction (int *resultat, int *nbr1, int *nbr2);
    void multiplication (int *resultat, int *nbr1, int *nbr2);
    int division (int *resultat, int *nbr1, int *nbr2);
    int modulo (int *resultat, int *nbr1, int *nbr2);
     
     
    #endif /* #ifndef __include_fichier_h__ */

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

Discussions similaires

  1. Retour de fonction pour allocation pointeur
    Par Tenshock dans le forum C
    Réponses: 8
    Dernier message: 26/12/2014, 22h44
  2. Réponses: 4
    Dernier message: 05/04/2010, 19h46
  3. Réponses: 4
    Dernier message: 30/10/2009, 12h45
  4. pb de pointeur de fonction pour thread
    Par melleb dans le forum MFC
    Réponses: 2
    Dernier message: 09/02/2007, 17h46
  5. Fonction pour récuperer mon adresse IP
    Par néo333 dans le forum Web & réseau
    Réponses: 11
    Dernier message: 01/11/2003, 18h35

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