Code C++ avec résultat pas cohérent
Fermé
Aelgar
-
20 avril 2016 à 08:03
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 21 avril 2016 à 11:07
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 21 avril 2016 à 11:07
A voir également:
- Code C++ avec résultat pas cohérent
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code blocks free - Télécharger - Langages
- Code windows 10 - Guide
3 réponses
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
20 avril 2016 à 12:10
20 avril 2016 à 12:10
Bonjour,
1) Ce tableau est mal initialisé :
2) Heureusement que tu t'arrêtes à 10 !!!
Version courte :
3) Tu as déclaré nombreFinal de type unsigned long int, dont la valeur maximale est ULONG_MAX ≈ 4.29*10^9 mais tu l'utilises comme s'il pouvait aller jusqu'à 10^50 ! Cela va entraîner des erreurs de calcul...
1) Ce tableau est mal initialisé :
int tableau[10][50] = {11};
2) Heureusement que tu t'arrêtes à 10 !!!
N = B % 10; B = B / 10; switch(N) { case 0: tableau[0][i] = i; break; case 1: tableau[1][i] = i; break; case 2: tableau[2][i] = i; break; case 3: tableau[3][i] = i; break; case 4: tableau[4][i] = i; break; case 5: tableau[5][i] = i; break; case 6: tableau[6][i] = i; break; case 7: tableau[7][i] = i; break; case 8: tableau[8][i] = i; break; case 9: tableau[9][i] = i; break; }
Version courte :
N = B % 10; B = B / 10; tableau[N][i] = i;
3) Tu as déclaré nombreFinal de type unsigned long int, dont la valeur maximale est ULONG_MAX ≈ 4.29*10^9 mais tu l'utilises comme s'il pouvait aller jusqu'à 10^50 ! Cela va entraîner des erreurs de calcul...
while(i < 49 ) { if((tableau[j][i]) < 10 && (tableau[j][i]) > 0) { x = 1; nombreFinal = z + j*(pow(10,(i-1)));
Merci de prendre le temps de répondre.
Voilà j'ai fait les modifications que tu m'as dis, néanmoins mon problème est toujours là, il ne me renvoit pas tout le temps la bonne valeur...Soit 1 de plus ou 2 ou 3 , ou 1 de moins,etc...
Voilà j'ai fait les modifications que tu m'as dis, néanmoins mon problème est toujours là, il ne me renvoit pas tout le temps la bonne valeur...Soit 1 de plus ou 2 ou 3 , ou 1 de moins,etc...
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
unsigned long int N = 0, B = 25, i = 1, x,y,z, j = 0, nombreFinal = 0;
unsigned long int nombre = 1;
int tableau[10][50] = {NULL} ;
cout << "Ecrivez un nombre (de moins de 10 chiffre):" << endl;
cin >> nombre ;
B = nombre;
while(B > 0 ){
N = B % 10;
B = B / 10;
tableau[N][i] = i;
i++;
}
x = i;
z = 0;
while(j <= 9)
{
i = 0;
y = 0;
while(i < 10 )
{
if((tableau[j][i]) < 10 && (tableau[j][i]) >= 1)
{
x = 1;
nombreFinal = z + j*(pow(10,(i-1)));
z = nombreFinal;
if (x == 1 && y != 5)
{
cout << "\n" << j << ":";
x = 2;
y = 5;
}
cout << " " << tableau[j][i]-1 ;
}
else
{
}
i++;
}
j++;
}
cout <<"\n" << nombreFinal;
}
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
20 avril 2016 à 14:48
20 avril 2016 à 14:48
"il ne me renvoit pas tout le temps la bonne valeur...Soit 1 de plus ou 2 ou 3 , ou 1 de moins"
Je ne sais pas comment tu exécutes ton programmes, mais quand je testes ton code, ça fait n'importe quoi... c'est pas juste la mauvaise valeur, tout est faux !
http://cpp.sh/7zcs
Je ne sais pas comment tu exécutes ton programmes, mais quand je testes ton code, ça fait n'importe quoi... c'est pas juste la mauvaise valeur, tout est faux !
http://cpp.sh/7zcs
Ecrivez un nombre (de moins de 10 chiffre):
1
0: 3 3
1: 0
3: 0
6: 1
9: 0
90009001
Je viens de copier/coller mon code sur ton site, il m'affiche le bon résultat et pas ce que tu a c/p au dessus, pourtant en essayant ton lien effectivement ça affiche le résultat que tu as envoyer...
Les résultats pas tous cohérent, retourné par mon compilateur :
http://zupimages.net/viewer.php?id=16/16/bykh.png
http://zupimages.net/viewer.php?id=16/16/ejlt.png
http://zupimages.net/viewer.php?id=16/16/uisb.png
http://zupimages.net/viewer.php?id=16/16/rohh.png
Mon code sur ton site, qui marche :
http://cpp.sh/2g7n
Le truc bizarre c'est que sur ton site tout fonctionne impeccable, pas sur code::blocks ....Je vais essayer avec un troisieme compilateur voir si le problème vient de code::blocks.
PS : J'ai initialisé le tableau en tableau[10][11] plutôt que tableau[10][50] mais j'ai oublié de remplacer dans le dernier code que j'ai copier ici...J'crois pas que ça change grand chose mais bon !
Les résultats pas tous cohérent, retourné par mon compilateur :
http://zupimages.net/viewer.php?id=16/16/bykh.png
http://zupimages.net/viewer.php?id=16/16/ejlt.png
http://zupimages.net/viewer.php?id=16/16/uisb.png
http://zupimages.net/viewer.php?id=16/16/rohh.png
Mon code sur ton site, qui marche :
http://cpp.sh/2g7n
Le truc bizarre c'est que sur ton site tout fonctionne impeccable, pas sur code::blocks ....Je vais essayer avec un troisieme compilateur voir si le problème vient de code::blocks.
PS : J'ai initialisé le tableau en tableau[10][11] plutôt que tableau[10][50] mais j'ai oublié de remplacer dans le dernier code que j'ai copier ici...J'crois pas que ça change grand chose mais bon !
cptpingu
Messages postés
3837
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 mars 2023
2
21 avril 2016 à 11:07
21 avril 2016 à 11:07
Bonjour.
Plutôt que de pointer tout ce qui ne va pas, je te renvoi directement sur cette conversation (à bien lire jusqu'à la fin, surtout la page 2):
https://codes-sources.commentcamarche.net/forum/affich-10056758-le-poids-d-un-nombre
C'est un exercice qui est apparemment souvent donné...
Quelques conseils:
- Évite les using namespace, c'est crade et dangereux, voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace/
- En C++ on évite "NULL", soit tu utilises "0", soit tu as un compilo "moderne" et tu utilises "nullptr".
- Préfère <cmath> à <math.h> (en C++, si tu un header qui finit par ".h" regarde si la version commençant par un "c" existe).
Plutôt que de pointer tout ce qui ne va pas, je te renvoi directement sur cette conversation (à bien lire jusqu'à la fin, surtout la page 2):
https://codes-sources.commentcamarche.net/forum/affich-10056758-le-poids-d-un-nombre
C'est un exercice qui est apparemment souvent donné...
Quelques conseils:
- Évite les using namespace, c'est crade et dangereux, voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace/
- En C++ on évite "NULL", soit tu utilises "0", soit tu as un compilo "moderne" et tu utilises "nullptr".
- Préfère <cmath> à <math.h> (en C++, si tu un header qui finit par ".h" regarde si la version commençant par un "c" existe).