319
nPos := 0
// initialisation compteur valeurs positives
nNeg := 0
// initialisation compteur valeurs négatives
répéter
{ écrire «donnez un entier : »
lire val
si val > 0 alors { sommePos := sommePos + val
nPos := nPos + 1
}
si val < 0 alors { sommeNeg := sommeNeg + val
nNeg := nNeg + 1
}
}
jusqu’à val = 0
// arrêt sur valeur nulle
écrire «somme des valeurs positives : », sommePos
si nPos >0 alors
{ moyPos := sommePos * 1.0 / nPos
// attention à la formule
écrire «moyenne des valeurs positives : », moyPos
}
écrire «somme des valeurs négatives : », sommeNeg
si nNeg >0 alors
{ moyNeg := sommeNeg * 1.0 / nNeg
// attention à la formule
écrire «moyenne des valeurs négatives : », moyNeg
}
Pour calculer la moyenne des valeurs positives, on ne peut pas se contenter d’utiliser
l’instruction :
moyPos := sommePos / nPos
qui effectuerait une division entière. Comme nous avons fait l’hypothèse que nous ne disposions pas d’instructions de conversion (ici d’entier en réel), il nous faut utiliser un artifice, en forçant cette conversion, par exemple, avec l’expression :
moyPos := sommePos * 1.0 / nPos
La présence de la multiplication par 1.0 entraîne la conversion de sommePos en réel, lequel
multiplié par 1.0 fournit un résultat de type réel. Pour effectuer la division suivante, on
convertit également nPos en réel et le résultat est bien celui escompté.
La même remarque s’applique à la moyenne des valeurs négatives.
Exercice 6.3
Ici, il n’est plus question d’utiliser la première valeur comme « maximum provisoire ». En
revanche, compte tenu de la nature particulière du problème, on est sûr que la valeur minimale des valeurs positives sera supérieure ou égale à 0. Il est donc possible d’utiliser cette
valeur 0 comme valeur provisoire du maximum. La démarche est ensuite classique : elle
consiste à comparer chaque valeur positive à ce maximum temporaire, en le modifiant dès
qu’apparaît une valeur qui lui est supérieure. Cependant, si à la fin du processus, la valeur
maximale est toujours 0, c’est qu’en fait aucune valeur positive n’a été fournie. Il faudra donc
en tenir compte dans l’affichage des résultats.
Précédent

- 342/370

Suivant