neofly dans le caca profond | Bonsoir à tous,
Comme dit dans le titre j'ai réalisé un programme de tri par ordre croissant et décroissant, j'ai testé ma fonction (tri à bulle) et elle fonctionne mais voilà le problème:
Lorsque que je crée un switch case pour donner le choix à l'utilisateur de faire tel ou tel tri cela ne fonctionne plus il me trie mes nombres dans l'ordre où je les ai taper:
1ère question : quel est le problème?
2ème question: comment faire dans ma fonction menu pour qu'il boucle au cas où la personne ne tape pas un nombre entre 1 et 4?
3ème question: comment faire pour re-proposer un choix ou stopper le programme après avoir effectué une action ? (avec un if??)
merci d'avance et voici le code :
Programme:
Code :
- #include <stdlib.h>
- #include <stdio.h>
- //Prototype des fonctions
- int menu();
- int maximum (int *,int );
- int minimum (int *,int );
- void croissant(int *,int );
- void decroissant(int *,int );
- // Programme principal
- int main(){
-
- int nbr_eleve;
- int i,choix;
- printf("introduisez le nombre d'eleves : " );
- scanf("%d",&nbr_eleve);
- printf ("\n\n" );
- int tab_notes[nbr_eleve];
-
-
- for (i=0;i<nbr_eleve ;i++ ){
-
- printf("Introduisez la note %d: ",i+1);
- scanf("%d",&*(tab_notes+i));
-
- }
- printf ("\n\n" );
- choix=menu();
- switch (choix){
-
- case 1:
- printf("\nTableau des valeurs tries par ordre croissant\n\n" );
- croissant(tab_notes,nbr_eleve);
- for (i=0;i<nbr_eleve;i++){
-
- printf("%d ",*(tab_notes+i));
- }
- break;
- case 2:
- printf("\n\nTableau des valeurs tries par ordre decroissant\n\n" );
- decroissant(tab_notes,nbr_eleve);
-
- for (i=0;i<nbr_eleve;i++){
-
- printf("%d ",*(tab_notes+i));
- }
- break;
- case 3:
- printf("Moins bonne note = %d \n",minimum(tab_notes,nbr_eleve));
- break;
-
- case 4:
- printf("\n\nMeilleur note = %d \n",maximum(tab_notes,nbr_eleve));
- break;
-
- }
-
- printf("\n\n" );
- system("pause" );
- return 0;
-
- }
- // Définition des fonctions
- //Fonction Menu
- int menu(){
- int choix_menu;
- int numero_fonction;
-
- printf ("Quel est votre choix ? \n\nEntrez un nombre entre 1 et 4\n\n" );
- printf ("1. Tri croissant \n" );
- printf ("2. Tri decroissant \n" );
- printf ("3. Moins bonne note \n" );
- printf ("4. Meilleur note \n" );
- scanf ("%d", &choix_menu);
-
- switch (choix_menu)
- {
- case 1:
- numero_fonction = 1;
- break;
- case 2:
- numero_fonction = 2;
- break;
- case 3:
- numero_fonction = 3;
- break;
- case 4:
- numero_fonction = 4;
- break;
- default:
- printf ("Vous n'avez pas entre un numero valide\n\n\n veuillez entrer un nombre entre 1 et 4\n" );
- break;
- }
-
- return numero_fonction;
- }
- // Fonction maximum
- int maximum (int *tab,int taille){
-
- int max=0;
- int i;
- for (i=0;i<taille;i++){
- if(*(tab+i)>max){
-
- max = *(tab+i);
- }
- }
- return max;
- }
- // Fonction minimum
- int minimum (int *tab,int taille){
-
- int min= *tab;
- int i;
- for (i=0;i<taille;i++){
-
- if(*(tab+i)<min){
-
- min = *(tab+i);
- }
- }
- return min;
- }
- // Fonction croissante
- void croissant(int *tab,int taille){
-
- int buffer;
- int i,j;
- for (j=0;j<taille;j++){
-
- for (i=0;i<taille-1;i++){
-
- if(*(tab+i)>*(tab+i++)){
-
- buffer = *(tab+i);
- *(tab+i)=*(tab+i++);
- *(tab+i++)=buffer;
- }
- }
- }
- }
- // Fonction décroissante
- void decroissant(int *tab,int taille){
-
- int buffer;
- int i,j;
- for (j=0;j<taille;j++){
-
- for (i=0;i<taille-1;i++){
-
- if(*(tab+i)<*(tab+i++)){
-
- buffer = *(tab+i);
- *(tab+i)=*(tab+i++);
- *(tab+i++)=buffer;
- }
- }
- }
- }
|
|