Langage C, Valeur absolu, fabs [Résolu]

Signaler
Messages postés
12
Date d'inscription
lundi 12 mars 2007
Statut
Membre
Dernière intervention
14 août 2013
-
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
-
Bonjour, donc je suis plus qu'un débutant :p
Et je suis les instructions d'un forum pour apprendre. Et avec ce code source, qui est censé calculer la valeur absolu d'un nombre, j'ai de petits problemes!
Donc voici le code:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char *argv[])
{    double absolu 0, nombre 0;

    printf("Calcul de la valeur absolue\n\nEntrer nombre : "); //On demande d'entrer un nombre
    scanf("%ld", &nombre);
   
    absolu = fabs(nombre);

    printf("Valeur absolue = %ld\n", absolu); //Valeur absolue du nombre calculée

    system("PAUSE");   
    return 0;
}
Donc avec celui ci, si je rentre un nombre la fonction fabs me retournera quelque soit le signe( - ou +) le même nombre. Déjà que le programme ne sert pas a grand chose, alors là il sert vraiment a rien pour le coup :p
double absolu 0, nombre 0;
En changeant ce double par int ça marche, par contre je peux plus le faire avec des nombre décimaux...

Du coup j'ai essayé de mettre double a la place de int dans la déclaration de fonction :
int main(int argc, char *argv[])
Et ça refait comme au début

Et pour finir en laissant
double main(int argc, char *argv[]),
et en mettantint absolu 0, nombre 0;
On ne voit toujours pas la valeur absolu pour les nombres décimaux

Voila si quelqu'un pourrait m'aider, merci d'avance je pense pas que ça doit etre bien dur a résoudre (j'utilise Visual C++)

8 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
%lf
et non
%ld

int main(int argc, char *argv[])
{    double absolu 0, nombre 0;
   
    printf("Calcul de la valeur absolue\n\nEntrer nombre : "); //On demande d'entrer un nombre
    scanf("%lf", &nombre);
   
    absolu = fabs(nombre);
   
    printf("Valeur absolue = %lf\n", absolu); //Valeur absolue du nombre calculée
    return 0;
}

C++ (@++)
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
thème topic : déplacé de ASP vers CPP !
Messages postés
12
Date d'inscription
lundi 12 mars 2007
Statut
Membre
Dernière intervention
14 août 2013

Personne?
Messages postés
12
Date d'inscription
lundi 12 mars 2007
Statut
Membre
Dernière intervention
14 août 2013

Seulement ça met plein de 0 ...
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
printf("Valeur absolue = %.15lg\n", absolu); //Valeur absolue du nombre calculée

Affichera un maximum de 15 chiffres après la virgule.

C++ (@++)
Messages postés
12
Date d'inscription
lundi 12 mars 2007
Statut
Membre
Dernière intervention
14 août 2013

En faite
printf("Valeur absolue = %lg\n", absolu);
printf("Valeur absolue = %.15lg\n", absolu);
Donnent le même résultats j'ai plus les zéro

Si j'ai d'autre question je peux les poser ici? Ou je fais un autre post?
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
Ok. Je ne sais pas pour toi mais si j'entre plus de 5 chiffres après la virgule, printf ne les affiches pas.

8.25468795
affichera
8.25468

d'où le .15 pour forcer l'affichage de, au plus, 15 chiffres après la virgule.

C++ (@++)
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
Si tu as des questions sur un sujet différent, crée un autre post.

C++ (@++)