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

Valerian13 12 Messages postés lundi 12 mars 2007Date d'inscription 14 août 2013 Dernière intervention - 20 sept. 2008 à 12:18 - Dernière réponse : SAKingdom 3213 Messages postés lundi 7 novembre 2005Date d'inscription 16 février 2009 Dernière intervention
- 20 sept. 2008 à 18:17
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++)
Afficher la suite 

8 réponses

Répondre au sujet
SAKingdom 3213 Messages postés lundi 7 novembre 2005Date d'inscription 16 février 2009 Dernière intervention - 20 sept. 2008 à 17:33
+1
Utile
%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++ (@++)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de SAKingdom
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 20 sept. 2008 à 12:44
0
Utile
thème topic : déplacé de ASP vers CPP !
Commenter la réponse de PCPT
Valerian13 12 Messages postés lundi 12 mars 2007Date d'inscription 14 août 2013 Dernière intervention - 20 sept. 2008 à 14:48
0
Utile
Personne?
Commenter la réponse de Valerian13
Valerian13 12 Messages postés lundi 12 mars 2007Date d'inscription 14 août 2013 Dernière intervention - 20 sept. 2008 à 17:38
0
Utile
Seulement ça met plein de 0 ...
Commenter la réponse de Valerian13
SAKingdom 3213 Messages postés lundi 7 novembre 2005Date d'inscription 16 février 2009 Dernière intervention - 20 sept. 2008 à 17:59
0
Utile
printf("Valeur absolue = %.15lg\n", absolu); //Valeur absolue du nombre calculée

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

C++ (@++)
Commenter la réponse de SAKingdom
Valerian13 12 Messages postés lundi 12 mars 2007Date d'inscription 14 août 2013 Dernière intervention - 20 sept. 2008 à 18:08
0
Utile
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?
Commenter la réponse de Valerian13
SAKingdom 3213 Messages postés lundi 7 novembre 2005Date d'inscription 16 février 2009 Dernière intervention - 20 sept. 2008 à 18:15
0
Utile
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++ (@++)
Commenter la réponse de SAKingdom
SAKingdom 3213 Messages postés lundi 7 novembre 2005Date d'inscription 16 février 2009 Dernière intervention - 20 sept. 2008 à 18:17
0
Utile
Si tu as des questions sur un sujet différent, crée un autre post.

C++ (@++)
Commenter la réponse de SAKingdom

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.