Exposant avec C++!!?? [Fermé]

Signaler
Messages postés
76
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
12 septembre 2007
-
 Xx_pussy_slayer_kevin_maltais_xX -
Bonsoir
je sais pas comment faire x à la puissance y en cpp
j'ai essayer x**y ca marche pas!!!
x^y ca marche pas!!!
si y a qq un qui peut m'aider svp
merci d'avance, je travail sur DEV C++
bonne soirée

5 réponses

Messages postés
365
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
19 mai 2006
104
Salut !

Il faut utiliser la fonction pow() :

int i = pow(x,2);

pour avoir x puissance 2. La fonction est déclarée dans math.h
30
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci


merci <3
Messages postés
76
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
12 septembre 2007
9
salut
merci bcp Luffy
mais quand je fais ça:
float a,x,y;
cin>>x,y;
cout<<a;

je donne:2 puis 3
il me donne 1 comme 2 puissnce 3??!!
je sais pas pourquoi
a plus
Messages postés
365
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
19 mai 2006
104
C'est parce que quand tu veux récupérer 2 données avec une seule ligne de code, il faut mettre :
cin >> b >> c;

et là cela devrais marcher, car j'ai tester chez moi, et ça fonctionne nickel !
Messages postés
76
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
12 septembre 2007
9
merci bcp
ca marche trés bien
a plus
J'ai un soucis similaire, mais avec un exposant sous forme de fraction :

2^(7/5)
et pow ne me sort pas le bon résultat (j'ai testé avec un cas simple, pow(100,1/2)

comment puis je le résoudre?
if faut que les paramètres d'entrées de pow soient de type double ceci un programmes testé en microsoft visual studio 2008 et donne du bonne résultat
#include "stdafx.h"
#include <math.h>
#include <iostream>
#include <stdio.h>
using namespace std ;

int main()
{
double a,b;
double y;
cin>> a;
cin>>b;
y= pow(a,b);
cout<<"y=\n"<<y;

return 0;
}
Messages postés
29370
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 octobre 2020
6 954
Comme dit plus bas l'erreur vient du fait qu'une fraction de la forme n / m est évaluée comme un entier (vu que n est de type int). Il faut pour ces cas de figure caster n en double par exemple.

Ensuite dans ton exemple de programme, tu inclues plein de headers qui servent à rien et tu fais un mélange entre les headers C et les opérateurs du C++. Ainsi ton programme s'écrit de manière propre comme ceci :

En C++ :

#include <cmath>
#include <iostream>

int main() {
  double a, b;
  std::cin >> a;
  std::cin >> b;
  std::cout << pow(a, b) << std::endl;
  return 0;
}


En C :

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

int main() {
  double a, b;
  scanf("%lf", &a);
  scanf("%lf", &b);
  printf("%lf\n",pow(a, b));
  return 0;
}
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 707
Juste une petite erreur : printf("%f\n",pow(a, b)); (%f au lieu de %lf).
Messages postés
29370
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 octobre 2020
6 954
Parfaitement, j'allais le dire ;-)
Messages postés
29370
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 octobre 2020
6 954
Ah oui mais attention 1/2 = partie_entiere(0.5) = 0 en C (contrairement à 1.0/2 qui vaut bien 0.5). Peut-être que le problème vient de là !
n'oublie pas d'importer la bibliotheque math.h
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 707 > Marcol417
La réponse a déjà été donnée il y a 9 ans...
Et pour info, math.h n'est pas une bibliothèque.