Division entière et reste


Dans le module "Expressions arithmétiques" nous avons parlé des fonctionnalités de l'opération de division en Pascal.
Rappelez-vous que pour les données entières (type integer), vous pouvez utiliser trois opérations de division :
- division normale, renvoie une valeur de type réel
div - division entière, lorsque nous supprimons la partie fractionnaire à la suite de l'opération de division
mod - calcul du reste de la division

SOUVENEZ-VOUS !
En Pascal le résultat de la division d'un entier par un entier – c'est toujours un nombre réel.

Exemple : var a, b, d, e : entier ;   c:réel ; un := 10; b := 3; c := un / b; // Réponse : s = 3,33333333333333E+000 d := a mod b; // Réponse : d = 1 e := une div b; // Réponse : e = 3 Ces opérations sont très importantes en programmation. Ils doivent être compris et utilisés correctement. Et cela demande de la pratique !

 

La nécessité d'appliquer l'opération de calcul du reste de la division est visible lorsque l'on travaille avec les chiffres d'un nombre. 

Analysons la tâche suivante :
Un nombre à trois chiffres est donné. Affichez tous les chiffres de ce nombre et obtenez un nouveau nombre formé par la permutation des unités et des centaines

La question la plus difficile qui se pose aux débutants est de savoir comment prendre et obtenir ses chiffres à partir d'un nombre.
En fait, tout est résolu assez simplement, si vous vous souvenez des calculs. Et les mathématiques nous disent que tout nombre peut être décomposé en une somme de termes numériques.
Par exemple : 365=3*100+6*10+5*1 . Nous voyons que chaque chiffre est un multiplicateur du chiffre correspondant du nombre. 
Nous allons montrer comment obtenir chaque chiffre d'un nombre dans une variable distincte, en utilisant l'exemple de la division des colonnes par le nombre 10. (Nous prenons le nombre 10, car nous avons un système de numération décimale et, par conséquent, nous avons des termes numériques 1, 10, 100, etc.)
  

En analysant la figure, vous pouvez voir que  e := n mod 10; // opération n mod 10 - calcule le dernier chiffre du nombre n (c'est-à-dire les unités du nombre) 365 mod 10 = 5 d := n div 10 mod 10; // opération n div 10 - réduit le nombre de 10 fois, c'est-à-dire supprime le dernier chiffre du nombre (365 div 10 = 36), // nous pouvons maintenant calculer le nombre de dizaines en appliquant l'opération familière au résultat - calculer le reste après division par le nombre 10, 36 mod 10 = 6 s := n div 100; // pour obtenir des centaines, il suffit de supprimer deux chiffres à droite du nombre, c'est-à-dire de diviser par 10 deux fois (n div 10 div10 ou la même chose que n div 100< /strong>) 365 div 100 = 3
Ayant les chiffres enregistrés du nombre, nous pouvons en faire n'importe quel nombre en multipliant le chiffre souhaité par le chiffre correspondant : 
par exemple, la ligne ci-dessous obtiendra un nouveau nombre à partir du nombre d'origine n, avec des centaines et des unités réarrangées :
1) l'ancien nombre de uns (stocké dans la variable e)  multiplié par 100 
2) l'ancien nombre de dizaines (stocké dans la variable d)  multiplier par10 
3) on peut simplement multiplier l'ancien nombre de centaines par 1, ou simplement prendre la valeur stockée dans la variable s
Ensuite, ajoutez simplement les valeurs des points 1, 2 et 3 et obtenez un nouveau nombre :

n1 := e * 100 + d * 10 + s ;

L'ensemble du programme ressemblera à ceci : var n, e, d, s : entier ; commencer lire(n); e := n mod 10; d := n div 10 mod 10; s := n div 100; writeln(e, '', d, '', s, '', e * 100 + d * 10 + s); fin.