Probleme ave double et long

miki -  
goulamass Messages postés 1427 Statut Membre -
Bonjour, a tous voila je debute en programation C et pour m'entrainer j'ai decider de construire un programme de conversion tout bete qui convertit les franc en euro le probleme etant qu'il ne fonctionne pas lorsque je met un nombra decimale ici 6.555957 je croit que c'est un probleme de type etant donner que le nomre renvoyer et un long et que je le multiplie par un nombre decimale voici le code source

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

double conv1(double n1)//création de la fonction convertion de type double
{

return 6.55957*n1;//renvoit de la valeur 6.55957*n1
}

int main(int argc, char *argv[])
{
long n2=0,resultat=0;//déclaration des variables n2=nombre entré par l'utilisateur et resultat=le resultat a afficher

printf("Entrez un chiffre a convertir \n");// Demande a l'utilisateur de taper son nombre a convertir

scanf("%ld",&n2);//récupère la saisie

resultat=conv1(n2);// appel de la fonction conv1

printf("Votre resultat est %ld\n",resultat);//affiche la valeur renvoyer par la fonction conv dont le resulta etait contenu dans la variable resultat

system("PAUSE");

return 0;
}

Merci de votre aide par avance

ps: ce programme peut paraitre enfentin pour les initiés mais pour moi c'est une façon de bien comprendre les base du c merci
A voir également:

3 réponses

Ipsec Messages postés 11 Statut Membre 1
 
En precisant que resultat est un double et n1 est un long ya pas de soucis ;)

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


//Cette fonction converti les euros en francs !
double conv1(long n1)//création de la fonction convertion de type double
{

  return 6.55957*n1;//renvoit de la valeur 6.55957*n1
}

int main(int argc, char *argv[])
{
  long n2 = 0;
  double resultat = 0;//déclaration des variables n2=nombre entré par l'utilisateur et resultat=le resultat a afficher

  printf("Entrez un chiffre a convertir \n");// Demande a l'utilisateur de taper son nombre a convertir

  scanf("%ld",&n2);//récupère la saisie

  resultat = conv1(n2);// appel de la fonction conv1

  printf("Votre resultat est %f\n",resultat);//affiche la valeur renvoyer par la fonction conv dont le resulta etait contenu dans la variable resultat
#ifdef WIN32
  system("PAUSE");
#endif

  return 0;
} 
0
Ipsec Messages postés 11 Statut Membre 1
 
Ton programme converti des euros en francs, tu devrai rajouter une fonction du type:

double fr2euros(double n1){
     return n1/6.55957;
}
0
goulamass Messages postés 1427 Statut Membre 177
 
Bonjour,

Pourquoi n'utilise pas des double tout au long du programme???
0