Bonjour les amis, voyant que vous êtes des intellegent dans les programmes "C/C++" j'ai proposer un jeu simple et facile pour vous.Et le jeu c'est de trouver
les fautes dans le code "C/C++", et qui trouvera toutes les fautes et les corigeraient prend la main (aprés la confirmation de la reponse) de donner lui aussi un code "C" plein de faute, et ça continue!
Allez on commence (à moi la main maintenant):
int main(int argc, char **argv[]) { long nombreCoups=0; long nombreMystere=0,nombreEntre=0; long choixMenu1 = 0, choixMenu2 = 0; long MAX = 100 , MIN = 1;
switch(choixMenu1); { case1: printf("Choisissez le niveau que vous voulez!\n\n"); printf("1-Niveau 1:1==>100\n"); printf("2-Niveau 2:1==>1000\n");
scanf("%ld", choixMenu2); break; case2: printf("L'essentiel de ce jeu est de trouver le nombreMystere par-hasard en construisant des nombres qui sont entre les nombres de niveau que tu as choisi\n"); printf("Bonne chance\n"); break; }
/*
Identation horrible!!!
*/ //Prototype errone: char **argv[] int main(int argc, char *argv[]) { long nombreCoups=0; long nombreMystere=0,nombreEntre=0; long choixMenu1 = 0, choixMenu2 = 0; long MAX = 100 , MIN = 1;
srand (time(NULL)); //nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; //Voir plus bas
printf("=========>Bonjour<=========\n"); printf("===>********Menu********<===\n"); printf("1-Jouer.\n");//Tout en fr sauf ça: Play. printf("2-Instructions.\n");
scanf("%ld" , &choixMenu1); //Utiliser ld pas lf.. Mettre le &
switch(choixMenu1)//pas de ; ... { case1: printf("Choisissez le niveau que vous voulez!\n\n"); printf("1-Niveau 1:1==>100\n"); printf("2-Niveau 2:1==>1000\n");
scanf("%ld", &choixMenu2); //mettre un &.. //Le nombre a déjà été vérifié... break; case2: printf("L'essentiel de ce jeu est de trouver le nombreMystere par-hasard\
en construisant des nombres qui sont entre les nombres de niveau que \
vous avez choisi\n"); //Quelques fautes orthographiques... printf("Bonne chance\n");
exit(0);//pour ne pas entrer dans le jeu après.. break; }
switch(choixMenu2)//idem que plus hauut.. { case1:
MAX=100;
MIN=1;//respecter la casse break; case2:
MAX=1000;
MIN=1;//idem break; }
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; //Ici car le nombre généré sera entre les bornes de niveau
do { printf("Quel est le nombre?");
scanf ("%ld", &nombreEntre);//Ne pas oublier le &
if(nombreMystere > nombreEntre)//pas de ; pour un if { printf("C'est plus!\n\n");
nombreCoups++;//oublié les ; } elseif(nombreMystere < nombreEntre)//pas de ; dans un else if { printf("C'est moins!\n\n");
nombreCoups++;//idem que + haut }
else { printf("Bravo vous l'avez trouve en %ld coups!!!\n\n\n", nombreCoups);
nombreCoups = 11;//Sortie bourrin de la boucle }
Bon si vous jouez au jeu de "je recherche les erreures dans les codes des autres", qui veut dire de maniére détournée "aidez moi, j'y arrive pas !", je veux bien jouer .
Voici mon code :
int compareNombres () { long nombreMystere; long NombreEntre; if( NombreEntre > nombreMystere ) printf("C'est moins !\n\n"); elseif( NombreEntre < nombreMystere ) printf("C'est plus !\n\n"); else printf("Bravo, vous avez trouve le nombre mystere !\n"); }
int main (int argc, char** argv ) { long nombreMystere = 0, nombreEntre = 0; constlong MAX = 100, MIN = 1;
// Génération du nombre aléatoire
nombreMystere = genereNombre(MIN, MAX);
/* La boucle du programme. Elle se répète tant que l'utilisateur
n'a pas trouvé le nombre mystère */
do { printf("Quel est le nombre ? ");
scanf("%ld", &nombreEntre);
int compareNombres () { long nombreMystere; long NombreEntre; if( NombreEntre > nombreMystere ) printf("C'est moins !\n\n"); elseif( NombreEntre < nombreMystere ) printf("C'est plus !\n\n"); else printf("Bravo, vous avez trouve le nombre mystere !\n"); }
int main (int argc, char** argv ) { long nombreMystere = 0, nombreEntre = 0; constlong MAX = 100, MIN = 1;
// Génération du nombre aléatoire
nombreMystere = genereNombre(MIN, MAX);
/* La boucle du programme. Elle se répète tant que l'utilisateur
n'a pas trouvé le nombre mystère */
do { printf("Quel est le nombre ? ");
scanf("%ld", &nombreEntre);
int compareNombres () { long nombreMystere; long NombreEntre; if( NombreEntre > nombreMystere ) {printf("C'est moins !\n\n");} elseif( NombreEntre < nombreMystere ) {printf("C'est plus !\n\n"); } else {printf("Bravo, vous avez trouve le nombre mystere !\n"); } }
int main (int argc, char** argv ) { long nombreMystere = 0, NombreEntre = 0; constlong MAX = 100, MIN = 1;
// Génération du nombre aléatoire
nombreMystere = genereNombre(MIN, MAX);
/* La boucle du programme. Elle se répète tant que l'utilisateur
n'a pas trouvé le nombre mystère */
do { printf("Quel est le nombre ? ");
scanf("%ld", &NombreEntre);
compareNombres(NombreEntre, nombreMystere);
}while(NombreEntre != nombreMystere);
system("PAUSE"); }
Edit :les principales erreures était les accordales " { , } " et les " N " majuscule dans " nombreEntre " , " NombreEntre "parce que on voit le " N" majuscule dans le début dans le int genernombre .
Insomniak > Perso je ne voit pas comment faire pour déceler les erreur...
Peut etre parce que je suis encore un débutant...
Bon tout d'abord merci de votre aide, mais sa ne marche toujours pas. Au moins il se compile. Mais le probleme c'est que ce n'est pas 1 le nombre minimum... Je tape 1 il me dit "c'est moins" et pareil quand je tape zéro...
Pourriez vous m'aider ?
int compareNombres () { long nombreMystere; long NombreEntre; if( NombreEntre > nombreMystere ) {printf("C'est moins !\n\n");} elseif( NombreEntre < nombreMystere ) {printf("C'est plus !\n\n"); } else {printf("Bravo, vous avez trouve le nombre mystere !\n"); } }
/*...*/
compareNombres(NombreEntre, nombreMystere);
Hum non mais quand vous corrigez, faudrait faire attention à ne pas mettre des trucs faux !
Premièrement : int compareNombre ? ok, mais faudrait peut-être faire un return sur un int or la il n'y a rien à retourner : donc la fonction est de type void !
Deuxièmement : pas de paramètres dans la déclaration de fonction ? ok mais on n'en passe pas à l'appel de fonction ! Donc le proto de la fonction n'est pas :
int compareNombre();
mais c'est :
int compareNombre (long nombre1, long nombre2); et on enlève les déclaration de nombreMystere et nombreEntre à l'intérieur qui servent à rien !
Voilà ça ça m'a tout de suite choqué mais j'édite pour le reste si il reste des erreurs !
Edit : bon même problème sur genereNombre :
int genereNombre (constlong MIN,constlong MAX) { long nombreMystere = 0;
bon nombreMystere est un long et tu lui associe un int vu que la fonction est de type int ! De plus tu ne renvoie rien dans la fonction donc nombreMystere est égale à ... que dalle !
Merci, merci et encore merci pour ces aides si précieuses...
Maintenant, j'en suis au cour de Mateo sur les pointeurs et j'aimerais avoir une petite précision.
Il nous apprend que lorsque l'on tape la variable "age" (exemple de son cour) avec
%ld, ça nous renvoie la valeur (10 en l'occurence ici). Il nous dit aussi que lorsque l'on tape "&age", on peut savoir l'addresse de cette valeur avec %p (hexadécimal) et %ld (décimal). Mais que renvoie %p avec "age" ?
Si je ne dis pas de bêtise, il renvoie la valeur hexadécimale contenue dans la variable age.
Donc si age vaut 10, ça donne quelque chose comme "A" en hexadécimal.
Si t'as pas compris, sache que de toute façon on s'en fout royalement de ça
Existe-t-il aussi un %machin pour le nombre en binaire ?
En fait je mettais dis que je ferais un convertisseur décimal-hexadécimal-binaire mais si en plus de %p y'en a un pour le binaire ça sert à rien !
Bon même si ce n'est pas à moi de jouer, j'ai un petit probleme que j'aimerais résoudre dans le jeu
En fait dans la lecon sur les pointeurs, il fallait réaliser une conversion du temps en minute en heure/minute. Je l'ai fait, mais ça n'affichait rien à l'écran. Alors après, embété, j'ai décidé de copier coller le code de M@téo (pour voir mes erreurs bien sur )Et la toujours pareil, quand je le lançais, il affichait directement "appuyez sur une touche pour continuer". Matéo aurait il fait une erreur ?
int main(int argc, char *argv[]) { long heures = 0, minutes = 90;
// On envoie l'adresse de heures et minutes dans la fonction decoupeMinutes.
decoupeMinutes(&heures, &minutes);
// Cette fois, les valeurs ont été modifiées ! printf("%ld heures et %ld minutes", heures, minutes);
return0; }
void decoupeMinutes(long* pointeurHeures, long* pointeurMinutes) { /* Attention à ne pas oublier de mettre une étoile devant le nom
des pointeurs ! Comme ça, vous pouvez modifier la valeur des variables,
et non leur adresse ! Vous ne voudriez pas diviser des adresses
n'est-ce pas ? ;o) */
int main(int argc, char *argv[]) { long heures = 0, minutes = 90;
// On envoie l'adresse de heures et minutes dans la fonction decoupeMinutes.
decoupeMinutes(&heures, &minutes);
// Cette fois, les valeurs ont été modifiées ! printf("%ld heures et %ld minutes", heures, minutes);
system("PAUSE"); return0; }
void decoupeMinutes(long* pointeurHeures, long* pointeurMinutes) { /* Attention à ne pas oublier de mettre une étoile devant le nom
des pointeurs ! Comme ça, vous pouvez modifier la valeur des variables,
et non leur adresse ! Vous ne voudriez pas diviser des adresses
n'est-ce pas ? ;o) */
Forcément tu mets ton system("PAUSE"); dans ta fonction !!!
En fait le programme fait bien quelque chose ! Essaie de mettre un printf("Bonjour"); avant l'appel de fonction et tu verras qu'il s'affichera !
Mais arrivé dans la fonction il fait ce qu'on lui demande et mets le programme en pause !
EDIT : grilled ! Tout de même un commentaire sur ta façon de faire Oussama : tu donnes souvent un code et jamais d'explication même en commentaire donc stp donne des précisions (un peu comme je l'ai fait !)
Merci a vous deux !!
En fait je ne crois pas que ce soit expliqué dans les tutos parce qu'il ne met plus system("PAUSE") mais c'est vrai à la limite j'aurais pus trouver tout seul...
Au fait pour le jeu je passe la main : pas que ça m'intéresse pas je pense même que ça peut aider à ne plus faire certaine erreur, mais c'est que j'ai pas trop le temps de coder un code faux ! (Je dois déjà finir cet éditeur !)
Tu ne la laisse pas car tu as été grillé.
C'est moi qui la laisse.
Absolument pas ! Relis le problème que tu as corrigé et tu verras qu'il dit qu'il profite de ce post mais que cela ne fait pas parti du jeu (bah oui il n'a pas la correction alors !).
Mais si ça te fait tant plaisir de prendre la main pour la laisser juste derrière je ne saurais ma permettre de te priver de cette joie !
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
If you'd like to join us, read "How do we work at OpenClassrooms"! :)