LDIV |
Division longue |
---|---|
Langage C++ | cstdlib (stdlib.h) |
Syntaxe
ldiv_t ldiv(long a,long b) |
Paramètres
Nom | Description |
---|---|
a | Ce paramètre permet d'indiquer le nombre à diviser |
b | Ce paramètre permet d'indiquer le diviseur |
Description
Cette fonction retourne le reste et le quotient séparément en effectuant de division de a par b.
Remarques
- La fonction ldiv() renvoie le quotient et le restant de l'opération numérateur (a) / dénominateur (b).
- Le type de structure ldiv_t aura au moins ces deux champs :
- Définition et utilité : La fonction ldiv est définie dans la bibliothèque <cstdlib> en C++ et permet de diviser deux entiers longs (long int) tout en renvoyant à la fois le quotient et le reste de la division. Contrairement à l'opérateur /, qui ne renvoie que le quotient, ldiv permet de récupérer à la fois le quotient et le reste dans une seule opération, ce qui peut être très utile dans les calculs où ces deux valeurs sont nécessaires.
- Divisions négatives : ldiv suit les règles de la division entière en C++, ce qui signifie qu'elle peut gérer les divisions impliquant des nombres négatifs. Lorsque le numérateur ou le dénominateur est négatif, le quotient et le reste sont calculés selon les règles de la division entière, où le reste a le même signe que le numérateur. Par exemple :
- ldiv_t result = ldiv(-20, 6);
- std::cout << "Quotient: " << result.quot << ", Reste: " << result.rem << std::endl;
- Utilisation dans les algorithmes de division modulaire : ldiv est très utile dans les algorithmes de division modulaire, où le quotient et le reste doivent être utilisés simultanément. Par exemple, dans certains algorithmes de cryptographie ou de traitement numérique, il est essentiel de récupérer à la fois le quotient et le reste d'une division pour effectuer des calculs ultérieurs de manière optimale. Utiliser ldiv permet d'obtenir les deux résultats dans une seule opération, ce qui est plus efficace que de les calculer séparément.
- Avantage par rapport à l'utilisation de l'opérateur % et / séparément : L'utilisation de ldiv présente un avantage par rapport à l'utilisation des opérateurs / et % séparément pour obtenir le quotient et le reste, car elle est plus optimisée et propre. En effet, la fonction ldiv effectue la division et le calcul du reste dans une seule opération interne, ce qui peut réduire le temps d'exécution, notamment dans les boucles ou les calculs répétitifs.
- Comportement avec des valeurs nulles : Si le dénominateur (denom) est nul, la fonction ldiv provoque un comportement indéfini. Cela peut entraîner des erreurs d'exécution (généralement un plantage du programme) si cette situation n'est pas correctement gérée. Il est donc important de vérifier que le dénominateur est non nul avant d'utiliser ldiv pour éviter de telles erreurs.
Les champs ont la signification suivantes :
Champ | Description |
---|---|
quot | Le quotient de la division. |
rem | Le reste de la division. L'utilisation de cette structure permet de manipuler les résultats de manière organisée et claire. |
Cela donnera "Quotient: -4, Reste: 4", car -20 divisé par 6 donne un quotient de -4 et un reste de 4 (le reste est toujours positif ou nul).
Exemple de comparaison :
Exemple de gestion de cette situation :
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :

- #include <iostream>
- #include <cstdlib>
-
- int main()
- {
- std::cout << "ldiv(1048576,256) = " << ldiv(1048576,256).quot << std::endl;
- std::cout << "ldiv(65536,256) = " << ldiv(65536,256).quot << std::endl;
- std::cout << "ldiv(-81,9) = " << ldiv(-81,9).quot << std::endl;
- std::cout << "ldiv(15,3) = " << ldiv(15,3).quot << std::endl;
- std::cout << "ldiv16,3) = " << ldiv(16,3).quot << std::endl;
- std::cout << "ldiv(17,3) = " << ldiv(17,3).quot << std::endl;
- std::cout << "ldiv(18,3) = " << ldiv(18,3).quot << std::endl;
- std::cout << "ldiv(19,3) = " << ldiv(19,3).quot << std::endl;
- std::cout << "ldiv(0,1) = " << ldiv(0,1).quot << std::endl;
- return 0;
- }
on obtiendra le résultat suivant :
ldiv(1048576,256) = 4096ldiv(65536,256) = 256
ldiv(-81,9) = -9
ldiv(15,3) = 5
ldiv16,3) = 5
ldiv(17,3) = 5
ldiv(18,3) = 6
ldiv(19,3) = 6
ldiv(0,1) = 0
Voici un exemple d'utilisation simple de ldiv pour diviser deux nombres entiers longs :
Ce programme affichera "Quotient: 3, Reste: 2", car 20 divisé par 6 donne un quotient de 3 et un reste de 2.
Voir également
Langage de programmation - C++ - Référence de procédures et fonctions - div
Langage de programmation - C - Référence de procédures et fonctions - ldiv
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 732.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 157.