Correction

Correction

Place à la fameuse correction.

Si vous avez réussi ce TP, c'est très bien, vous avez bien acquis les bases, à contrario, j'invite ceux qui n'ont pas encore réussi, à persévérer en relisant tous les anciens chapitres si besoin.


calc.h


Je commence par implémenter calc.h, c'est le plus facile et aussi le plus court, il va contenir que 4 lignes, les 4 prototypes de nos 4 fonctions :


double somme(double a, double b);

double difference(double a, int b);

double produit(double a, double b);

double quotient(double a, double b);


J'utilise le type double pour que l'utilisateur puisse utiliser nos fonctions avec des nombres décimaux.

Rien de compliqué, il manque juste quelques directives de préprocesseur pour éviter des inclusions infinies que nous verrons plus loin.


C'est tout pour calc.h, passons maintenant à calc.c :


calc.c


C'est ici que nous allons implémenter chaque fonction, nos 4 fonctions sont très simples, un return suffit.


#include "calc.h"

double somme(double a, double b)
{
    return a + b;
}

double difference(double a, int b)
{
    return a - b;
}

double produit(double a, double b)
{
    return a * b;
}

double quotient(double a, double b)
{
    return a / b;
}


Une fonction n'est pas un bloc d'instructions, les accolades sont donc obligatoires même pour un simple return.


On peut par contre écrire nos fonctions comme ceci :


double somme(double a, double b) { return a + b; }


L'inconvénient c'est que c'est moins lisible, prenez l'habitude de rendre vos codes sources lisibles, vous me remercierez plus tard vous verrez .


Enfin, notez l'inclusion de calc.h qui permet au compilateur de s'organiser et de nous dire si on a bien implémenté les fonctions.


Encore un fichier rapide à implémenter, passons de suite au fichier main.c.


main.c

La première chose à faire c'est de rendre notre programme joli, il ne faut donc pas hésiter à utiliser des \n ou la fonction system pour changer le titre de la fenêtre par exemple (avec la commande title) :



Assez parlé, place au code source final !

#include <stdio.h> // Pour appeler scanf et printf
#include <stdlib.h> // Pour appeler system
#include "calc.h" // Pour appeler nos 4 fonctions

int main()
{
    // On déclare les variables
    double a = 0, b = 0;
    int choix = 0;

    system("title Calculatrice (Tetdoss)"); // On change le titre de la fenêtre

    // Étape 1, on demande le nombre a
    printf("*** ÉTAPE 1 ***\n\nEntrez un nombre a : ");
    scanf("%lf", &a);

    // Étape 2, on demande le signe
    while (choix < 1 || choix > 4) // On boucle si l'utilisateur entre n'importe quoi
    {
        printf("\n*** ÉTAPE 2 ***\n\n1. * (produit)\n2. / (quotient)\n3. + (somme)\n4. - (difference)\n\nVotre choix : ");
        scanf("%d", &choix);
    }

    // Étape 3, on demande le nombre b
    printf("\n*** ÉTAPE 3 ***\n\nEntrez un nombre b : ");
    scanf("%lf", &b);

    // Enfin, on affiche le résultat à l'aide d'un switch
    switch (choix)
    {
        case 1 :
            printf("\n%f * %f = %f", a, b, produit(a, b)); // Appel à produit
        break;
        case 2 :
            printf("\n%f / %f = %f", a, b, quotient(a, b)); // Appel à quotient
        break;
        case 3 :
            printf("\n%f + %f = %f", a, b, somme(a, b)); // Appel à somme
        break;
        case 4 :
            printf("\n%f - %f = %f", a, b, difference(a, b)); // Appel à difference
        break;
    }

    return 0;
}


Je vous laisse essayer de comprendre la correction, vous avez déjà tout vu !


Voilà, c'est la fin de ce TP, pour vous exercer encore plus, essayez d'améliorer ce programme !

Créé avec HelpNDoc Personal Edition: Gagnez du temps et de la frustration avec la fonction de conversion WinHelp HLP vers CHM de HelpNDoc