Probleme de compilation
Forum Programmation : Probleme de compilation
Salut tout le monde, je m'explique en fait je n'arrive pas a compilé sur dev-c++ Voila ce que j'ai fait
#include <iostream>
using namespace std;
int main(){
int zero=0,un=0,n,r;
cout<<"Entrer un nombre"<<endl;
cin>>n;
while(n>=1)
{
r=n%2;
n=n/2;
if (r==1)
{
++un;
}
else if (r==0)
{
++zero;
}
}
cout<<"nombre de zero"<<""<<"nombre de un"<<endl;
cout<<"le nombre de zero-le nombre de un"<<endl;
cout<<"(zero-un)"<<endl;
return 0;
J'ai essayé en faite de faire un binaire qu"il me donne tout le temps la réponse de binaire mais il bloque il me donne juste "Entrer un nombre" puis quand je tape 8 par exemple il se referme :s
Message édité par hanye2020 le 11-10-2008 à 12:06:15
Si tu arrive à lancer ton programme ce n'est déjà pas un problème de compilation ... sinon il ne compilerait pas.
Ensuite le problème vient du fait que lorsque le programme a executer la dernière instruction, il se ferme et tu n'as donc pas le temps de voir le résultat.
Rajoute ca avant ton return 0;
system("pause" );
ouai sa ferme plus la page
Mais le probléme quand j'appuie comme j'ai mis 8 le programme ne calcule pas le 8 en base 2 (binaire ) Elle s'arrete chez moi Entrer le nombre :
8
Appuyer sur une touche pour continuer....
Personne pour m'aider ?
le system("pause" ); met-le bien juste avant le return 0;
sinon remontre ton nouveau code.
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
#include <iostream>
using namespace std;
int main(){
short int n,r,zero=0,un=0;
cout<<"Entrer un nombre"<<endl;
cin>>n;
while (n>=2)
{
r=n%2;
n=n/2;
if (r==1)
{
un++;
}
else if (r==0)
{
zero++;
}
}
system("pause" );
return 0;
Voila
merci pour votre aide
Tu n'affiches aucun résultat, mais l'algo devrait fonctionner
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
C'est a dire le résultat ? J'ai compilé et jai exécuté le programme jai Entrer le nombre j'ai mis 8 ensuite sa ne continue pas sa devrait me donnai 1000 en base 2
Non , tu comptes juste le nombre de 0 et le nombre de 1, et tu n'affiches pas ces valeurs.
Message édité par CRicky le 11-10-2008 à 18:50:11
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
je tes envoyer un message cricky pour que tu comprenne ce que je veux dire lit le
merci
En fait le probléme pour être clair c'est qu'il ne calcule pas le reste de la division et le nombre et il ne fait pas les conditions il s'arrete a "Entrer le nombre" une fois que j'appuie par exemple sur 8 il continue plus et il affiche le nombre de zero: 0
le nombre de un :0
cest po logique ??
#include <iostream>
using namespace std;
int main (){
int n,r,zero=0,un=0;
cout<<"Entrer un nombre"<<endl;
cin>>n;
while (n<=0)
{
r=n%2;
n=n/2;
if (r==1)
{
un++;
}
else if (r==0)
{
zero++;
}
}
cout << "le nombre de zero : " << zero << endl;
cout << "le nombre de un : " << un << endl;
system("PAUSE" );
return 0;
}
OK, je viens de comprendre.
Ta condition est "while (n<=0) ", ce qui signifie que ça continue la boucle tant que n <= 0, et 8 n'est pas négatif, donc il ne rentre même pas dans la boucle.
En fait tu a inversé la condition. Il faut mettre "while (n > 0)", c'est à dire que ça boucle tant que n > 0 (et donc la boucle s'arrêtera lorsque n <= 0).
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Merci pour ta reponse cricky mais sa change rien c'est bizarre voila le resultat :
#include <iostream>
using namespace std;
int main (){
int n,r,zero=0,un=0;
cout<<"Entrer un nombre"<<endl;
cin>>n;
while (n>0)
{
r=n%2;
n=n/2;
if (r==1)
{
un++;
}
else if (r==0)
{
zero++;
}
}
cout << "le nombre de zero : " << zero << endl;
cout << "le nombre de un : " << un << endl;
system("PAUSE" );
return 0;
}
et ça affiche quoi pour 8 par exemple?
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
rien sa reste 8 cest tout tu peu essayer si tu veux telecharge dev-c++
Merci pour ta reponse
Le dernier code est le code exacte que tu as compilé ? il n'y a pas vraiment d'erreur pourtant d'un point de vue code.
Je ne test aucun code ici. Comme loic m, je pense que tu n'a pas exécuté le dernier programme.
Message édité par CRicky le 11-10-2008 à 23:16:33
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Merci pour votre reponse mais sacher je l'ai compiler et je l'ai reexecuter je vous le promet.:s Si quelqu'un pourai l'essayer et me dire ce qu'il a trouvé comme faute . MEric pour votre aiide.
Ton code actuel, affiche au moins "le nombre de zero : ", donc si tu n'as pas ça, c'est que ton programme compilé ne correspond pas à ce source.
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Enfin j'ai réussi merci cricky. En fait comme tu m'a di c'était peut être pas la bonne source ce que j'ai fait j'ai fait jai ouvert une nouvelle page et jai copié le tout et jai recompilé et tout fonctionne
Tu peux lire le message que je t'es envoyer parceque je n'arrive pas a comprendre ce que je dois faire aprés sa.
Si tu as un problème tu postes sur le forum, je n'aide pas en MP.
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
ok
Message édité par hanye2020 le 21-10-2008 à 00:41:38
personne pour m'aider
Essaie de faire quelque chose, et envoie le code si tu bloques.
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
#include <iostream>
using namespace std;
int difference1_0(int );
int main ()
{
int nombre_entre,x;
cout<<"Entrez un nombre : ";
cin>> nombre_entre;
for(int n=0; n<nombre_entre ; n++)
{
x = difference1_0(n);
cout<<x<<endl;
}
}
int difference1_0 (int nombre_entre)
{
int rest,zero=0,un=0,dif;
do
{
rest=nombre_entre%2;
if(rest==0)
{
zero++;
}
else if(rest==1)
{
un++;
}
nombre_entre=nombre_entre/2;
}
while(nombre_entre!=0);
dif=(un-zero);
return dif;
}
Quand j'entre un numero elle se referme direct :s et il fo en faite si je tape 16 par exemple le programme doit me donner −1 1 0 2 -1 1 1 3 -2 0 0 2 0 2 2 4 -3
Si tu boss sur windows tu as enccore oublié le system("pause" ); juste avant le return.
Voila j'ai réussi à finir mon projet. Est ce que il ya des erreurs de syntaxe ou de faute quelque part? je voudrais ajouter des commentaire a l'aide de ''//" que puis je dire ? parceque on nous l'impose. merci pour votre aide en tout cas
#include <iostream>
using namespace std;
int difference1_0(int );
int main ()
{
bool estNegatif=true;
int nombre_entre,nbre_suite_dif,compteur=0,nbre_courant=0;
cout<<"Entrez un nombre : ";
cin>> nombre_entre;
for(int n=0; n<nombre_entre ; )
{
nbre_suite_dif=difference1_0(nbre_courant);
if(nbre_suite_dif==0)
{
compteur++;
}
else
{
bool estNegatif2=(nbre_suite_dif<0);
if(estNegatif==estNegatif2)
{
compteur++;
}
else
{
cout<<compteur<<" ";
compteur=1;
estNegatif=estNegatif2;
n++;
}
}
nbre_courant++;
}
system ("pause" );
}
int difference1_0 (int nombre_entre)
{
int rest,zero=0,un=0,dif;
do
{
rest=nombre_entre%2;
if(rest==0)
{
zero++;
}
else if(rest==1)
{
un++;
}
nombre_entre=nombre_entre/2;
}
while(nombre_entre!=0);
dif=(un-zero);
return dif;
}
Message édité par hanye2020 le 17-10-2008 à 03:29:30
Quand tu fais une boucle, tu explique sur quoi tu boucles (par exemple: boucle sur tous les nombres précédents le nombre choisi). Dans les if et les else, tu précise dans quel cas tu es dans cette partie de code. Ne met jamais de nom de variable ou de bout de code dans les commentaires explicatifs, car il faut que ce soit compréhensible par quelqu'un qui n'a pas encore lu le code. D'ailleurs, il faut pouvoir comprendre comment ton algo marche sans avoir lu le code.
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
voila j'ai fait les commentaires, vous pourriez modifier un peu sa et changer les variables et voir la syntaxe si cest juste
merci mais voila ce que j'ai deja fait
Code :
|
Message édité par hanye2020 le 20-10-2008 à 00:22:50
personne pour m'aider
Peux-tu éditer en mettant les balises de code (bouton C/C++)?
parce que c'est illisible
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Voila
qu'est ce que vous en pensez ?? j'ai fait les commentaires, vous pourriez modifier un peu sa et changer les variables et voir la syntaxe si cest juste merci mais voila ce que j'ai deja fait
Il faut mettre [cpp] et non pas [borne]
voila
quest ce que vous en penser?
Code :
|
ça, ça ne sert à rien, on voit que c'est une déclaration de fonction. Dit simplement à quoi elle sert (par exemple: fonction qui calcule la différence entre le nombre de 1 et le nombre de 0).
Ne met jamais un commentaire qui explique le côté technique du code. Dis-toi que le commentaire doit être lu par une personne qui ne connait pas le contexte de ton programme (qui n'a jamais lu l'énoncé).
Personnellement, je sais programmer en C, donc je n'ai pas besoin de détail technique, et celui qui ne sait pas programmer en C, pas la peine de lui expliquer un truc qu'il ne va pas comprendre, sauf si c'est un tutorial et que tu veux lui apprendre à programmer en C, sans trop chercher au fonctionnement de ton programme (ce qui n'est pas ton cas).
Code :
|
Voilà c'est mieux ça, mais attention ce n'est pas très clair si on a pas lu l'énoncé.
Code :
|
Et le for il sert à faire quoi ? à boucler sur quoi ?
Code :
|
A quoi sert le if ? dans quel cas (sans citer de nom de variable) on rentre ou on ne rentre pas dans le if ?
Code :
|
Voilà, ça c'est parfait. Juste un détails: généralement, pour les commentaires des if et des for, on les met une ligne avant:
Code :
|
On dit ce qu'on fait en commentaire, et après, on met le code pour montrer comment on le fait.
Code :
|
Parfait, mais pareil pour la position du commentaire.
Code :
|
Idem
Code :
|
Bonne description. En fait il faut mettre le même commentaire (au caractère près
) au niveau de la déclaration du prototype.
Après pour une description complète des fonction, tu peux décrire les paramètre et le retour de la fonction. Là, tu peux être légèrement (j'ai bien dit légèrement
) plus technique, car si jamais quelqu'un (ou toi plus tard), doit utiliser ta fonction sans avoir à regarder son code pour savoir comment elle marche, avoir les détails sur les paramètres et la valeur de retour aident beaucoup
Par exemple (ce n'est qu'un exemple), tu peux faire:
Code :
|
Message édité par CRicky le 20-10-2008 à 20:52:48
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Il y a 262 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
