Probleme dans un TP ( debutant )
kakashi-sensei
-
fikou13 Messages postés 16 Statut Membre -
fikou13 Messages postés 16 Statut Membre -
Bonjour,
j'apprends a programmer , je suit des cours , en arrivant a un TP nommé plus ou moin qui est connu , j'ai voulu l'améliorer mais en éxecutant le programme , quand je tape le choix 1 ça entre dans une boucle infinie , je voudrai savoir ou est l'erreur et merci d'avance
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
const int MIN = 1;
int nombreEntre =0, nombreMystere=0, compteur =0,continuerPartie, MAX = 100, choixMenu=0, difficulte=0;
printf("\n\n==== Mar7aban bikom fi lo3bat syada mn ras l7m9 ===\n");
printf("****Menu Principal****\n");
printf("1.niveau de difficulte\n");
printf("2.About !\n");
scanf("%ld",&choixMenu);
if(choixMenu ==1){//si l'utilisateur choisi 1 il recoit la demande de difficultée
printf(" choisissez votre niveau de difficulte :\n");
printf("1. Faclie , entre 0 et 100 ");
printf("2. Moyen , entre 0 et 1000 ");
printf("3. difficile , entre 0 et 10000 ");
while (difficulte !=1 && difficulte !=2 && difficulte !=3)
{
switch (difficulte)// changement de MAX qui est lié a difficulte
{
case 1:
MAX =100;
break;
case 2:
MAX =1000;
break;
case 3:
MAX =10000;
break;
default:
printf(" sir tfella 3la mok dir 1 oula 2 oula 3\n");
}
}
do //boucle du recommencement de la partie
{
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
compteur=0;
do// boucle des choix de la partie
{
printf("dir nemra dyalk :");
scanf("%ld",&nombreEntre);
if ( nombreEntre > nombreMystere)
printf(" n9as azabi fin ghadi baghi tla3 lsma?\n");
else if ( nombreEntre < nombreMystere)
printf(" zid zid d zab nta din mok ta namra makatapehach?\n");
else
printf(" l3ez lik hanta l9itiha f %d d mou7awalat ^^\n ", compteur);
compteur++;
}while (nombreEntre != nombreMystere);
printf("tbri t3awd ola t9awd? ktab 1 ila briti t3awd o ktab 0 ila briti t9awd :");
scanf("%ld",&continuerPartie);
}while(continuerPartie);
}else if (choixMenu ==2)// 2eme choix du menu : about
printf(" had la3ba tsawbat f 2009 copyright by haytam 3o9o9 tawzi3 wa tab3 ma7foda li mcha dar chi copie lah i3ti lmmo lghara9 , netmenna tkon l3ba 3jbatkom sinn lhla ij3alha bach t3jb mkom\n");
else
printf(" sir 3i9 3la mmok\n ");
system("PAUSE");
return 0;
}
j'apprends a programmer , je suit des cours , en arrivant a un TP nommé plus ou moin qui est connu , j'ai voulu l'améliorer mais en éxecutant le programme , quand je tape le choix 1 ça entre dans une boucle infinie , je voudrai savoir ou est l'erreur et merci d'avance
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
const int MIN = 1;
int nombreEntre =0, nombreMystere=0, compteur =0,continuerPartie, MAX = 100, choixMenu=0, difficulte=0;
printf("\n\n==== Mar7aban bikom fi lo3bat syada mn ras l7m9 ===\n");
printf("****Menu Principal****\n");
printf("1.niveau de difficulte\n");
printf("2.About !\n");
scanf("%ld",&choixMenu);
if(choixMenu ==1){//si l'utilisateur choisi 1 il recoit la demande de difficultée
printf(" choisissez votre niveau de difficulte :\n");
printf("1. Faclie , entre 0 et 100 ");
printf("2. Moyen , entre 0 et 1000 ");
printf("3. difficile , entre 0 et 10000 ");
while (difficulte !=1 && difficulte !=2 && difficulte !=3)
{
switch (difficulte)// changement de MAX qui est lié a difficulte
{
case 1:
MAX =100;
break;
case 2:
MAX =1000;
break;
case 3:
MAX =10000;
break;
default:
printf(" sir tfella 3la mok dir 1 oula 2 oula 3\n");
}
}
do //boucle du recommencement de la partie
{
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
compteur=0;
do// boucle des choix de la partie
{
printf("dir nemra dyalk :");
scanf("%ld",&nombreEntre);
if ( nombreEntre > nombreMystere)
printf(" n9as azabi fin ghadi baghi tla3 lsma?\n");
else if ( nombreEntre < nombreMystere)
printf(" zid zid d zab nta din mok ta namra makatapehach?\n");
else
printf(" l3ez lik hanta l9itiha f %d d mou7awalat ^^\n ", compteur);
compteur++;
}while (nombreEntre != nombreMystere);
printf("tbri t3awd ola t9awd? ktab 1 ila briti t3awd o ktab 0 ila briti t9awd :");
scanf("%ld",&continuerPartie);
}while(continuerPartie);
}else if (choixMenu ==2)// 2eme choix du menu : about
printf(" had la3ba tsawbat f 2009 copyright by haytam 3o9o9 tawzi3 wa tab3 ma7foda li mcha dar chi copie lah i3ti lmmo lghara9 , netmenna tkon l3ba 3jbatkom sinn lhla ij3alha bach t3jb mkom\n");
else
printf(" sir 3i9 3la mmok\n ");
system("PAUSE");
return 0;
}
A voir également:
- Probleme dans un TP ( debutant )
- Logiciel montage vidéo débutant - Guide
- Logiciel de programmation pour débutant - Guide
- Platine dj debutant - Forum Enregistrement / Traitement audio
- Comment utiliser un ordinateur pour un débutant - Astuces et Solutions
- Apprendre le coran pour débutant (+ pdf) - Télécharger - Histoire & Religion
3 réponses
bonjour
tu ne demande pas a l'utilisateur la difficulté qu'il veux donc ta variable difficulté reste a 0 et ta boucle ne s'arrête donc jamais
Juste après ton while ajoute ca
scanf("%ld",&difficulte);
Adns
tu ne demande pas a l'utilisateur la difficulté qu'il veux donc ta variable difficulté reste a 0 et ta boucle ne s'arrête donc jamais
Juste après ton while ajoute ca
scanf("%ld",&difficulte);
Adns
Avec le code de ce matin, si tu le mets avant :
Il faut que la condition évaluée puisse devenir fausse à un moment, et pour ça il faut que tu place ton scanf à l'intérieur de la boucle :
Par exemple, il faut que testes ce que donne le programme lorsque tu rentres une difficulté de valeur 4.
Normalement il devrait t'afficher " sir tfella 3la mok dir 1 oula 2 oula 3" et te redemander la valeur (à condition que ton scanf ai bien été placé à l'intérieur de la boucle)
scanf("%ld",&difficulte);
while (difficulte !=1 && difficulte !=2 && difficulte !=3)
{
switch (difficulte)// changement de MAX qui est lié a difficulte
{Si la valeur de "difficulte" ne vaut ni 1, ni 2, ni 3, la boucle sera infinie !
Il faut que la condition évaluée puisse devenir fausse à un moment, et pour ça il faut que tu place ton scanf à l'intérieur de la boucle :
while (difficulte !=1 && difficulte !=2 && difficulte !=3)
{
scanf("%ld",&difficulte);
switch (difficulte)// changement de MAX qui est lié a difficulte
{Quand tu testes un programme il faut que tu testes aussi les cas qui posent problème.
Par exemple, il faut que testes ce que donne le programme lorsque tu rentres une difficulté de valeur 4.
Normalement il devrait t'afficher " sir tfella 3la mok dir 1 oula 2 oula 3" et te redemander la valeur (à condition que ton scanf ai bien été placé à l'intérieur de la boucle)
Bonjour
j'ai peur que c'est dû aux prières que t'as fait pour celui ou celle qui copie ton programme
printf(" had la3ba tsawbat f 2009 copyright by haytam 3o9o9 tawzi3 wa tab3 ma7foda li mcha dar chi copie lah i3ti lmmo lghara9 , netmenna tkon l3ba 3jbatkom sinn lhla ij3alha bach t3jb mkom\n");
hihi
la réponse vous a déja été fourni
bon aprentissage mon vieux
j'ai peur que c'est dû aux prières que t'as fait pour celui ou celle qui copie ton programme
printf(" had la3ba tsawbat f 2009 copyright by haytam 3o9o9 tawzi3 wa tab3 ma7foda li mcha dar chi copie lah i3ti lmmo lghara9 , netmenna tkon l3ba 3jbatkom sinn lhla ij3alha bach t3jb mkom\n");
hihi
la réponse vous a déja été fourni
bon aprentissage mon vieux
Ce n'est pas parce que tu ne comprends pas la langue de `kakashi-sensei` qu'il faut te permettre de s'en moquer.
Regarde ce que tu as écrit avant de critiquer :
j'ai peur que ce ne soit dû aux prières que tu ais faites
Et puis franchement, ton message n'est d'aucune utilité, il ne fait pas avancer le problème.
Apprends à te servir du forum avant de poster n'importe quoi !
Regarde ce que tu as écrit avant de critiquer :
j'ai peur que ce ne soit dû aux prières que tu ais faites
Et puis franchement, ton message n'est d'aucune utilité, il ne fait pas avancer le problème.
Apprends à te servir du forum avant de poster n'importe quoi !