La division en langage C… Pas si simple !

Pour un ordinateur, la division n’est pas une opération triviale, et cela pour plusieurs raisons (dont représentation en mémoire des données). Ici, nous ne discuterons que d’un problème : celui de l’ambiguïté ! En effet, lorsque vous demandez à un ordinateur de diviser deux nombres, vous souhaitez une division euclidienne ou une division classique ? Cela peut paraitre bête, mais cette question n’est pas anodine ! Le résultat d’une division classique sera un nombre à virgule, tandis que le résultat d’une division euclidienne sera … un entier (le quotient) et un autre entier (le reste).

Réflexe : Non mais quand on veut diviser, c’est qu’on veut une division classique… C’est évident !

Ah bon ? Regardez un peu sur cette page : la division posée. La division que nous avons appris à manipuler à l’école primaire était la division euclidienne !

En langage C, le choix du type de division (classique ou euclidienne) se fait automatiquement en fonction du type des données que vous utilisez dans la division.

 

 

Comme certains de mes étudiants ont du mal à comprendre tout cela, voici un exemple avec des bonbons, parce que les bonbons c’est bon :

Vous avez 30 bonbons que vous souhaitez distribuer à 4 amis. Afin de ne pas faire de jaloux, vous souhaitez leur en donner exactement le même nombre, et garder le reste pour vous. Vous commencez la distribution.

  1. Vous donnez 1 bonbon à chacun de vos amis.
    Ils ont donc 1 bonbons chacun et il vous reste 26 bonbons.
  2. Vous donnez 1 bonbon à chacun de vos amis.
    Ils ont donc 2 bonbons chacun et il vous reste 22 bonbons.
  3. Vous donnez 1 bonbon à chacun de vos amis.
    Ils ont donc 3 bonbons chacun et il vous reste 18 bonbons.
  4. Vous donnez 1 bonbon à chacun de vos amis.
    Ils ont donc 4 bonbons chacun et il vous reste 14 bonbons.
  5. Vous donnez 1 bonbon à chacun de vos amis.
    Ils ont donc 5 bonbons chacun et il vous reste 10 bonbons.
  6. Vous donnez 1 bonbon à chacun de vos amis.
    Ils ont donc 6 bonbons chacun et il vous reste 6 bonbons.
  7. Vous donnez 1 bonbon à chacun de vos amis.
    Ils ont donc 7 bonbons chacun et il vous reste 2 bonbons.

Vous n’avez plus assez de bonbons pour en donner 1 à chacun de vos amis. Vous arrêtez votre distribution. Deux questions :

  1. Combien chacun de vos amis possède de bonbons ? La réponse nous est donnée par le quotient, soit 30/4 = 7.
  2. Combien vous reste-t-il de bonbons ? La réponse est donnée par le reste, soit 30%4 = 2.

Pour plus de précisions sur la division classique et la division euclidienne, vous pouvez consulter ces deux pages wikipedia :

  1. La division euclidienne
  2. La division classique

 

 

 

 

Leave a Reply