LDIV |
Division longue |
---|---|
Langage C | math.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.
Algorithme
MODULE LDIV(numerator,denominator) SI denominator = 0 ALORS * Division par zéro : gestion d'erreur selon les besoins RETOURNE error * Par exemple, retourner une erreur ou une valeur spéciale. FIN SI * Division entière quotient ← [ numerator / denominator ] * Calcul du reste remainder ← numerator modulo denominator result.quotient ← quotient * Sauvegarde du quotient dans la structure result.remainder ← remainder * Sauvegarde du reste dans la structure RETOURNE result * Retourner la structure contenant quotient et reste |
Remarques
- Division entière avec résultat structuré : La fonction ldiv() effectue une division entière entre deux entiers longs (long int). Elle renvoie le quotient et le reste de la division sous forme d'une structure ldiv_t, contenant deux champs : quot (le quotient) et rem (le reste). Cette structure permet de récupérer facilement les deux résultats sans avoir à effectuer des calculs séparés pour le quotient et le reste.
- Exigence de la bibliothèque <stdlib.h> : La fonction ldiv() fait partie de la bibliothèque standard C et nécessite l'inclusion de l'entête <stdlib.h>. Sans cette inclusion, le compilateur ne reconnaîtra pas la fonction, ce qui entraînera des erreurs de compilation.
- Divisions avec des entiers longs : Contrairement à l'opérateur / ou à d'autres fonctions comme div(), traitant des entiers de type int, ldiv() travaille spécifiquement avec des entiers longs (long int). Cela permet de traiter des valeurs plus grandes, ce qui est utile dans des applications nécessitant des calculs avec des nombres plus importants que ceux pouvant être entreposés dans des entiers standards.
- Précision de la division entière : Comme div(), ldiv() effectue une division entière, ce qui signifie que le résultat de la division est arrondi à l'entier inférieur le plus proche. Par exemple, pour une division de -7 par 3, le quotient sera -3 et le reste sera 2, respectant la règle selon laquelle le reste doit avoir le même signe que le dividende.
- Cas de division par zéro : Lorsque ldiv() est utilisée avec un diviseur égal à zéro, le comportement est indéfini et peut entraîner des erreurs d'exécution. Il est donc essentiel de vérifier que le diviseur n'est pas nul avant d'appeler cette fonction, afin d'éviter des comportements inattendus.
- Retour sous forme de structure : ldiv() retourne une structure de type ldiv_t, contenant deux champs : quot, le quotient de la division, et rem, le reste de la division. Cela simplifie l'utilisation de la fonction, car elle permet de récupérer à la fois le quotient et le reste dans une seule opération sans avoir à effectuer plusieurs appels ou calculs.
- Utilité dans les calculs mathématiques complexes : La fonction ldiv() est souvent utilisée dans des applications où les divisions sont fréquentes, notamment dans les algorithmes de traitement de données numériques ou les calculs mathématiques nécessitant à la fois le quotient et le reste d'une division. Cela permet d'optimiser les performances et de rendre le code plus lisible.
- Comportement avec les nombres négatifs : Comme avec les autres opérations de division entière, ldiv() suit les règles de l'arithmétique entière pour gérer les signes du quotient et du reste. Lorsque le dividende ou le diviseur est négatif, le quotient et le reste sont ajustés pour respecter la relation : dividend = quotient * divisor + remainder. Le reste doit avoir le même signe que le dividende, et cette propriété est toujours respectée avec ldiv().
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
Essayer maintenant !
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
-
- int main()
- {
- printf("ldiv(1048576,256) = %i\n",ldiv(1048576,256));
- printf("ldiv(65536,256) = %i\n",ldiv(65536,256));
- printf("ldiv(-81,9) = %i\n",ldiv(-81,9));
- printf("ldiv(15,3) = %i\n",ldiv(15,3));
- printf("ldiv16,3) = %i\n",ldiv(16,3));
- printf("ldiv(17,3) = %i\n",ldiv(17,3));
- printf("ldiv(18,3) = %i\n",ldiv(18,3));
- printf("ldiv(19,3) = %i\n",ldiv(19,3));
- printf("ldiv(0,1) = %i\n",ldiv(0,1));
- 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
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.
Dernière mise à jour : Mardi, le 28 juillet 2015