Problème avec dev-c++

Fermé
Yannick1709 - 5 mars 2010 à 20:47
 Yannick1709 - 7 mars 2010 à 10:01
Bonjour,
Je me suis lancé il y a quelques jours dans la programmation en langage C à l'aide du logiciel Dev-C++ et je rencontre un problème pour le moins embêtant. Il ne servirait à rien de vous montrer le code de mon programme en entier, j'ai spécialement créé un programme beaucoup plus simple qui illustre parfaitement mon problème. En voici le code :

#include <cstdlib>
#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char *argv[])
{
double a=0;
scanf("%d",&a);
printf("\na = %d",a);
double a2=0;
a2=pow(a,2);
printf("\n\na2 = %d",a2);
scanf("%d",a);
}

Comme vous pouvez le constater, je crée une variable "a" à laquelle l'utilisateur donne une valeur, puis une seconde variable "a2" à laquelle je donne la valeur a² (j'ai pris soin d'inclure la bibliothèque math.h pour la fonction pow). Enfin l'ordi est censé afficher la valeur de "a2".
Malheureusement, quelle que soit la valeur que je donne à "a", l'ordi affichera toujours a2=0.
Je constate le même problème en donnant à "a2" la valeur a*a (ce qui revient au même), mais en revanche, j'ai un résultat cohérent quand je lui donne a*2 comme valeur, ou a+a, ou encore a+1. D'autre part quand je mets a2=a/a, je retrouve un a2=0 au lieu d'avoir 1.

J'espère avoir été assez clair et que vous trouverez une solution à mon problème.

Merci d'avance,
Yannick
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
5 mars 2010 à 22:00
Bonsoir,

Tout d'abord, vous mélangez le C avec le C++. Ce sont deux langages différents. Il faut éviter d'inclure cstdlib avec du math.h par exemple. Ou éviter d'utiliser scanf alors que cin est plutôt C++.
Je vais donc supposer, qu'il s'agit bel et bien du C, comme dit dans ton énoncé.


#include <cstdlib> /* il faut plutôt mettre stdlib.h mais facultatif ici */
#include <iostream> /*il faut plutôt mettre stdio.h*/
#include <math.h>

using namespace std; /*n'existe pas en C*/

int main(int argc, char *argv[])
{
double a=0; /*tu le déclares en double, il faut donc le traiter en conséquent...*/
scanf("%d",&a); /*a est un double, donc on mettra "%lf" dans le scanf*/
printf("\na = %d",a); /*a est un double, donc on mettra "%f" dans le printf
double a2=0; /*il vaut mieux déclarer a2 plus haut, car en C ANSI, les déclarations de variables doivent être faites en début de bloc*/
a2=pow(a,2); 
printf("\n\na2 = %d",a2); /*il faut mettre "%f"
scanf("%d",a); /* je n'en vois pas l'intérêt, d'autant plus qu'il manque l'esperluette (&) devant la variable "a". Tu peux mettre un petit system("pause"); (attention à inclure dans ce cas stdlib.h).*/
return 0; /*ne pas oublier le return 0 pour dire que ça c'est bien déroulé. Obligatoire en C Ansi.*/
} 

Si t'as d'autres questions, n'hésite pas.

Cdlt,
1
Merci beaucoup pour tes nombreux conseils fiddy ! Je tacherai d'être plus minutieux dans mes codes à l'avenir. (Je travaille bien en C et pas en C++)
Yannick
0