Table des matières

Etude de cas d'un programme existant

Analyse du programme

Nous avons le programme suivant :

#include <stdio.h>
 
int main()
{
    int a=-1,b,s_total=0,s1=0,s2=0,c1=0,c2=0,c0=0,i,d1=0,d2=0;
    float m_total,m1,m2;
 
    while(a<0)
    {
        printf("veuillez saisir un entier : ");
        scanf("%d",&a);
    }
 
 
    for(i=0;i<a;i++)
    {
        b=-1;
        while(b<0)
        { 
            printf("veuillez saisir un entier : ");
            scanf("%d",&b);
        }
 
        s_total=s_total+b;
        if(b==0)
        {
            c0=c0+1;
        }
 
        if(b<50)
        {
            s1=s1+b;
            c1=c1+1;
            if(d1<b)
            {
                d1=b;
            }
        }
        else
        {
            s2=s2+b;
            c2=c2+1;
        }   
        if(b>d2)
        {
            d2=b;
        }
    }
 
    m_total=s_total/(float)i;
    m1=s1/(float)c1;
    m2=s2/(float)c2;
 
    //affichage des résultats
    printf("Résultats : \n");
 
    printf("m_total=%d\n",m_total);
    printf("m1=%d\n",m1);
    printf("m2=%d\n",m2);
 
    printf("d1=%d\n",d1);
    printf("d2=%d\n",d2);
 
    printf("c0=%d\n",c0);
}

Compréhension générale

Commencez tout d'abord par décrire ce que fait le programme, en quelques lignes.

Questions de compréhension

Répondez aux questions suivantes :

  1. Que contient la variable s1?
  2. Que contient la variable c2?
  3. Que contient la variable c0?
  4. Que se se passe-il si l'utilisateur saisit une valeur négative pour a au début?
  5. Lorsque l'on fait l'opération s1=s1+b, est il possible que b soit négatif?
  6. variable m1?
  7. Que contient la variable m2?
  8. Que contient la variable i?

Quand on demande que contient une variable, il ne s'agit pas de donner une valeur, mais de décrire quelle information celle ci contient. Par exemple, la variable s_total contient la somme de toutes les valeurs saisies.

Déroulement du programme

Cas général

Dites ce qui sera affiché dans la partie affichage des résultats si l'utilisateur à effectué les saisies suivantes : 6,10,20,15,60,15,60

Cas particulier

Que se passe il si la première saisie de l'utilisateur est 0? Que faudrait il faire pour corriger ce problème?