Menu avec un switch

Résolu
cs_natacha86 Messages postés 16 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 9 février 2005 - 7 févr. 2005 à 19:58
cs_natacha86 Messages postés 16 Date d'inscription samedi 5 février 2005 Statut Membre Derniè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...

#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>


#define MAX 100

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);


switch(choix)
{
case 1 : tri_bulle();
break;


case 7 : break;


}


}
A voir également:

8 réponses

Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
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; }


}

}



bon.. ca devrait aller comme ca.




____


Omnia vincit labor improbus
3
Rejoignez-nous