Probleme c++, compatibilité pow(n,k) et %
Bapppi
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
Vicking54 Messages postés 89 Date d'inscription Statut Membre Dernière intervention -
Vicking54 Messages postés 89 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaie de faire un programme en c++ mais je ne comprend pas ou est l'erreur,
___________________________________________________
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
int nbrdechifr(int x)
{
int k = 1,;
while( x % pow(10,k) != x);
{ k == k+1; }
return k;
}
[...]
_____________________________________________________
L'erreur se trouve a la ligne ou se trouve le while, il me dit "invalid operands of types 'int' and 'double' to binary 'operator%' "
merci de votre aide
J'essaie de faire un programme en c++ mais je ne comprend pas ou est l'erreur,
___________________________________________________
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
int nbrdechifr(int x)
{
int k = 1,;
while( x % pow(10,k) != x);
{ k == k+1; }
return k;
}
[...]
_____________________________________________________
L'erreur se trouve a la ligne ou se trouve le while, il me dit "invalid operands of types 'int' and 'double' to binary 'operator%' "
merci de votre aide
A voir également:
- Probleme c++, compatibilité pow(n,k) et %
- Compatibilite windows 11 - Guide
- 1000 k€ en euros - Forum Logiciels
- K-3d - Télécharger - 3D
- 1,9 k vues - Forum YouTube
- 1 euros = 1 vues ? Vrai ? - Forum YouTube
2 réponses
bonjour,
les opérandes de modulo (%) doivent être des types entiers et pow(x,y) retourne un type double.
attention à l'écriture:
un ; après le while signifie que l'instruction while est terminée. (donc votre while ne fait rien.)
une affectation en C (ou C++) est réalisée par un opérateur = (k=k+1)
l'opérateur == est un opérateur de comparaison.
cdlt
les opérandes de modulo (%) doivent être des types entiers et pow(x,y) retourne un type double.
attention à l'écriture:
un ; après le while signifie que l'instruction while est terminée. (donc votre while ne fait rien.)
une affectation en C (ou C++) est réalisée par un opérateur = (k=k+1)
l'opérateur == est un opérateur de comparaison.
cdlt
Voici ton code corrigé
int nbrdechifr(int x) { int k = 1; // Ici le (int) est un cast pour utiliser le % sans soucis while( x % (int) pow(10.0,k) != x) { // Ici il faut utiliser =(affectation) au lieu de == (comparaison) k = k+1; } return k; }
pour vicking54:
l'opérateur ++ (ou --) est important en C ou C++ car il est associé à la notion de pointeur ou d'itérateur et doit être abordé et compris très tôt. D'autant que l'opérateur = est une aberration mathématique auquel on devrait substituer dans ce cas là l'opérateur +=.
pour le while, je suis d'accord avec toi sur le peu d'intérêt d'une contraction sinon à faire appréhender les notions de post ou pré incrément qui créent des différences importantes dans les résultats comme l'a justement noté fiddy.
l'opérateur ++ (ou --) est important en C ou C++ car il est associé à la notion de pointeur ou d'itérateur et doit être abordé et compris très tôt. D'autant que l'opérateur = est une aberration mathématique auquel on devrait substituer dans ce cas là l'opérateur +=.
pour le while, je suis d'accord avec toi sur le peu d'intérêt d'une contraction sinon à faire appréhender les notions de post ou pré incrément qui créent des différences importantes dans les résultats comme l'a justement noté fiddy.