Section courante

A propos

Section administrative du site

ABS

Valeur absolue
Langage C stdlib.h

Syntaxe

int abs(int n);

Paramètres

Nom Description
n Ce paramètre permet d'indiquer l'expression contenant le nombre à traiter

Retour

Valeur Description
0 ou supérieur Ces valeurs sont les seules pouvant être retourné. La valeur absolue d'un nombre est toujours positive.

Description

Cette fonction mathématique retourne la valeur absolue d'un nombre de type de données entier, soit l'abstraction des signes d'un nombre entier. Ainsi, le signe (négatif), s'il existe, est retiré de façon à conserver uniquement les chiffres du nombre sans toutefois changer sa valeur. Voici un graphique de représentation de la distribution de cette valeur :

Algorithme

MODULE ABS(valeur)
   SI valeur < 0 ALORS
      RETOURNE - valeur
   SINON
      RETOURNE valeur
   FIN SI

Remarques

Exemples

Voici un exemple montrant une utilisation de la valeur absolue avec des parenthèses :

Essayer maintenant !
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.     printf("Abs(9*(-7))=%i\n",abs(9*(-7)));
  7.     return 0;
  8. }

on obtiendra le résultat suivant :

Abs(9*(-7))=63

Voici un exemple montrant une utilisation plus classique de la valeur absolue :

Essayer maintenant !
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.     printf("Abs(1)=%i\n",abs(1));
  7.     printf("Abs(-1)=%i\n",abs(-1));
  8.     printf("Abs(30.2)=%i\n",abs(30.2));
  9.     printf("Abs(-35.4)=%i\n",abs(-35.4));
  10.     return 0;
  11. }

on obtiendra le résultat suivant :

Abs(1)=1
Abs(-1)=1
Abs(30.2)=30
Abs(-35.4)=35

Voici un exemple montrant la différence de résultats avec la fonction «SGN» :

Essayer maintenant !
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int sgn(double valeur) {
  6.  if(valeur < 0) return -1;
  7.  if(valeur == 0) return 0;
  8.  return 1;
  9. }
  10.  
  11. int main() {
  12.  printf("abs(1)=%i, sgn(1)=%i\n",abs(1),sgn(1));
  13.  printf("abs(-1)=%i, sgn(-1)=%i\n",abs(-1),sgn(-1));
  14.  printf("abs(0)=%i, sgn(0)=%i\n",abs(0),sgn(0));
  15.  printf("abs(5)=%i, sgn(5)=%i\n",abs(5),sgn(5));
  16.  printf("abs(10)=%i, sgn(10)=%i\n",abs(10),sgn(10));
  17.  printf("abs(-17)=%i, sgn(-17)=%i\n",abs(-17),sgn(-17));
  18.  printf("abs(27.4)=%.1f, sgn(27.4)=%i\n",fabs(27.4),sgn(27.4));
  19.  printf("abs(-12.13)=%.2f, sgn(-12.13)=%i\n",fabs(-12.13),sgn(-12.13));
  20.  return 0;
  21. }

on obtiendra le résultat suivant :

abs(1)= 1, sgn(1)= 1
abs(-1)= 1, sgn(-1)=-1
abs(0)= 0, sgn(0)= 0
abs(5)= 5, sgn(5)= 1
abs(10)= 10, sgn(10)= 1
abs(-17)= 17, sgn(-17)=-1
abs(27.4)= 27.4, sgn(27.4)= 1
abs(-12.13)= 12.13, sgn(-12.13)=-1

Voici un exemple montrant comment effectuer une comparaison avec Abs :

Essayer maintenant !
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main() {
  5.  int A = -10;
  6.  int B = 6;
  7.  if(abs(A) > abs(B)) printf("|a| > |b|\n");
  8.  if(abs(A) == abs(B)) printf("|a| = |b|\n");
  9.  if(abs(A) < abs(B)) printf("|a| < |b|\n");
  10.  return 0;
  11. }

on obtiendra le résultat suivant :

|a| > |b|

Voici un exemple montrant comment calculer la distance entre deux nombres à l'aide de la fonction Abs :

Essayer maintenant !
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main() {
  5.  printf("La distance entre -8 et 10 = %i\n",abs(-8 - 10));
  6.  printf("La distance entre 4 et 8 = %i\n",abs(4 - 8));
  7.  printf("La distance entre 0 et 5 = %i\n",abs(0 - 5));
  8.  printf("La distance entre -100 et 100 = %i\n",abs(-100 - 100));
  9.  return 0;
  10. }

on obtiendra le résultat suivant :

La distance entre -8 et 10 = 18
La distance entre 4 et 8 = 4
La distance entre 0 et 5 = 5
La distance entre -100 et 100 = 200

Voici un exemple montrant comment effectuer l'utilisation de la valeur absolue négatif (N_Abs) à l'aide de la fonction Abs :

Essayer maintenant !
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int N_Abs(int X) {
  6.  return - abs(X);
  7. }
  8.  
  9. double N_FAbs(double X) {
  10.  return - fabs(X);
  11. }
  12.  
  13. int main() {
  14.  printf("N_Abs(0)=%i\n",N_Abs(0));
  15.  printf("N_Abs(1)=%i\n",N_Abs(1));
  16.  printf("N_Abs(2)=%i\n",N_Abs(2));
  17.  printf("N_Abs(-1)=%i\n",N_Abs(-1));
  18.  printf("N_Abs(-2)=%i\n",N_Abs(-2));
  19.  printf("N_Abs(30.2)=%.1f\n",N_FAbs(30.2));
  20.  printf("N_Abs(-35.4)=%.1f\n",N_FAbs(-35.4));
  21.  return 0;
  22. }

on obtiendra le résultat suivant :

N_Abs(0)=0
N_Abs(1)=-1
N_Abs(2)=-2
N_Abs(-1)=-1
N_Abs(-2)=-2
N_Abs(30.2)=-30.2
N_Abs(-35.4)=-35.4

Voici un exemple montrant comment on peut revenir au point de départ en partant des négatif vers les positifs :

Essayer maintenant !
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.      
  4. int main()
  5. {
  6.     int i;
  7.     for(i = -5; i <= 5; i++) {
  8.         printf("%i", abs(i));
  9.         if(i < 5) printf(", ");
  10.     }
  11.     return 0;
  12. }

on obtiendra le résultat suivant :

5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5

Voici un exemple montrant comment faire le graphique de la valeur absolue :

Essayer maintenant !
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.     int I, J;
  7.     for(I = 7;I >= 0;I--) {
  8.         for(J = 0; J < 7-abs(I); J++) putchar(' ');
  9.         putchar('*');
  10.         for(J = -abs(I); J <= abs(I); J++) putchar(J==0?'|':' ');
  11.         puts("*");
  12.     }
  13.     for(I = -8;I <= 8;I++) {
  14.         putchar(I == 0?'+':'-');
  15.     }
  16.     puts("");
  17.     for(J = 0; J >= -7; J--) {
  18.         for(I = -8;I <= 8;I++) {
  19.            putchar(I == 0?'|':' ');
  20.         }
  21.         puts("");
  22.     }
  23.     return 0;
  24. }

on obtiendra le résultat suivant :

*       |       *
 *      |      *
  *     |     *
   *    |    *
    *   |   *
     *  |  *
      * | *
       *|*
--------+--------
        |        
        |        
        |        
        |        
        |        
        |        
        |        
        |        

Voici un exemple montrant comment faire le graphique de la valeur absolue et la valeur entière :

Essayer maintenant !
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.     int I, J;
  7.     for(I = 7;I >= 0;I--) {
  8.         for(J = 0; J < 7-abs(I); J++) putchar(' ');
  9.         putchar('+');
  10.         for(J = -abs(I); J <= abs(I); J++) putchar(J==0?'|':' ');
  11.         puts("±");
  12.     }
  13.     for(I = -8;I <= 8;I++) {
  14.         putchar(I == 0?'+':'-');
  15.     }
  16.     puts("");
  17.     for(J = 0; J >= -7; J--) {
  18.         for(I = -8;I <= 8;I++) {
  19.             if((I + 1 == J) && (J <= 0)) putchar('-');
  20.             else putchar(I == 0?'|':' ');
  21.         }
  22.         puts("");
  23.     }
  24.     puts("Legende :");
  25.     puts("+ Valeur absolue");
  26.     puts("- Valeur entiere");
  27.     return 0;
  28. }

on obtiendra le résultat suivant :

+       |       ±
 +      |      ±
  +     |     ±
   +    |    ±
    +   |   ±
     +  |  ±
      + | ±
       +|±
--------+--------
       -|        
      - |        
     -  |        
    -   |        
   -    |        
  -     |        
 -      |        
-       |        
Legende :
+ Valeur absolue
- Valeur entiere

Voir également

Langage de programmation - C - Référence procédures et fonctions - fabs
Langage de programmation - C - Référence procédures et fonctions - labs
Langage de programmation - C++ - Référence procédures et fonctions - abs

Références

Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 730.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 27.

Dernière mise à jour : Mardi, le 28 juillet 2015