Problème avec dev-c++
Yannick1709
-
Yannick1709 -
Yannick1709 -
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
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:
- Problème avec dev-c++
- Dev c++ - Télécharger - Langages
- Massgrave dev - Accueil - Windows
- Dev home. - Télécharger - Développement
- Dev pascal - Télécharger - Édition & Programmation
- Dev error 426 - Forum jeux en ligne
1 réponse
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é.
Si t'as d'autres questions, n'hésite pas.
Cdlt,
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,
Yannick