cs_natacha86
Messages postés16Date d'inscriptionsamedi 5 février 2005StatutMembreDernière intervention 9 février 2005
-
7 févr. 2005 à 19:58
cs_natacha86
Messages postés16Date d'inscriptionsamedi 5 février 2005StatutMembreDernière intervention 9 février 2005
-
7 févr. 2005 à 22:01
je ne comprend pas pkoi le programme une fois qu'il a lancé le premier choix du menu a la fin il ne reviens pas au menu, il s'arrete directement,
merci d'avance...
void tri_bulle()
{
int nb,i,j,v,tab[MAX]; /* Déclarations */
srand(time(NULL)); /* Initialisation du générateur aléatoire avec la fontion time */
printf("\n\n Nombre de valeurs a trier (du tableau) : ");
scanf("%d", &nb); /* Demande le nombre d'éléments à trier */
printf("\n");
for(i=0;i<nb;i++) /* Remplissage du tableau aléatoirement */
tab[i]=rand();
printf("Les valeurs avant le tri : "); /* affichage du tableau */
for(i=0; i<nb;i++)
printf("\n%d ",tab[i]);
for (i=0; i<nb; i++) /* tri */
for (j=nb-1; j>i; j--)
if (tab[j-1]>tab[j])
{
v=tab[j-1];
tab[j-1]=tab[j];
tab[j]=v;
}
printf("\n\nLes valeurs apres le tri :"); /* affichage du tableau */
for(i=0; i<nb;i++)
printf("\n%d ",tab[i]);
system("PAUSE");
}
/************************ programme principal ****************************/
int main()
{
/* déclarations */
int choix=0;
printf("\n\n\t\t\t ****************\n");
printf("\t\t\t *MENU PRINCIPAL*\n");
printf("\t\t\t ****************\n\n\n\n");
printf("\t TAPEZ :\n\n\n\n");
printf("\t\t1\t Pour :\t Lancer le prog de tri a bulle\n\n");
printf("\t\t2\t Pour :\t Lancer le prog de tri par insertion\n\n");
printf("\t\t3\t Pour :\t Lancer le prog de tri par ext\n\n");
printf("\t\t4\t Pour :\t Lancer le prog de tri shell\n\n");
printf("\t\t5\t Pour :\t Lancer le prog de tri fusion\n\n");
printf("\t\t6\t Pour :\t Lancer le prog de tri rapide\n\n");
printf("\t\t7\t Pour :\t Quitter le programme\n\n\n");
printf("\t CHOIX : ");
scanf("%d",&choix);
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 7 févr. 2005 à 20:42
le probleme vient de la:
switch(choix)
{
case 1 : tri_bulle();
break;
case 7 : break;
}
aie!! bon on reprend tout...
déja
ton switch ne prend en compte que les cas 1 et 7, que se passe t-il si
j'ai la mauvaise idée (moi ou mon petit frere de 6 mois qui sait meme
po ce qu'est un clavier) de taper 0, 5 ou 6876546?
donc:
switch(choix){
case 1 : tri_bulle(); break;
case 7 : break;
default: break; // si choix ne correspond a aucun choix possible, ciao...
}
ensuite:
case 7 : break; ne fait rien, on peut le virer, de toute facon si tu tapes 7 ca sera pris en charge par le case 'defaut'
bon. que se passe-t-il quand tu tapes 1 ? le prog passe au
switch, il trouve que le premier case va, il fait le tri, puis break;
break signifie que le prog va a la fin du switch, apres le }
qu'y a-t-il apres? le } qui signifie la fin de main()... et donc la fin du prog.
donc, ton prog ne plante pas du tout, ta fonction ded tri n'est pas en
cause, mais c'est toi qui n'as pas prévu un retour un peu plus haut.
reprenons:
void main(void){
int choix= 0;
bool continue=true;
while (continue==true){
printf ("tout ton menu");
scanf("%d",&choix);
switch(choix) {
case 1 : tri_bulle();break;
case 8:continue=false;
//tes autres case
default: printf("hé ducon lis les instructions ;) ");break; }
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 7 févr. 2005 à 20:46
dis donc byeto ta méthode est pas tres propre.
le return 0 s'adresse a main(), et ferme le prog; que se passe t-il si
elle veut faire autre chose apres avoir tapé 7 (enregistrement
parametres par ex )?
mais bon, dans ce cas precis ca marche..
_______________________
Omnia vincit labor improbus
Vous n’avez pas trouvé la réponse que vous recherchez ?