Bonjour,
Je rencontre un problème avec mon programme qui à terme doit m'afficher la moyenne des 5 données les plus élevés de mon tableau (pouvant contenir entre 7 et 20 données rentrées par l'utilisateur) après avoir utilisé un méthode de triage par extraction du minimum.
En effet lorsque je le lance, celui-ci ne s’exécute pas. Pourtant code::blocks ne détecte aucune erreur de saisie.
Pourriez-vous m'aidez s'il vous plaît ?

Voici mon programme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
#include <stdio.h>
 
#define VALMAX 20   // nombre max de valeurs
 
int main(void)
{
    int tab[VALMAX];   // le tableau des salaires
    int ind;          // indice de parcours du tableau
    int sal;        //salaire lu au clavier
    int nbval;      // nombre de valeurs dans le tableau (entre 7 et VALMAX)
    int aux;          // variable auxiliaire de permutation
    int nbtriees;       // nombre de cases trièes
    float moy;      //moyenne des salaires
    int min;
    int somme;      /* somme des mesures */
 
    // lire la série de valeur terminée par - 1
   /* lire la première valeur */
   printf("Donner le 1er salaire : ");
   scanf("%i", &sal);
   nbval = nbval++;
 
   /* tant que ce n'est pas la sentinelle */
   while(sal != -1)
   {
        /* c'est une "bonne" valeur : la compter dans le tableau */
      tab[sal]++;
      /* lire la valeur suivante (il reste au moins la sentinelle à lire */
      printf("Donner le salaire suivant : ");
      scanf("%i", &sal);
      nbval = nbval++;
   }
 
    /* méthode du tri par extraction du minimum */
    for(nbtriees = 0; nbtriees < nbval - 1; nbtriees++)
    {
        min = nbtriees;
        for(ind = nbtriees + 1; ind < nbval; ind++)
        {
            if(tab[ind] < tab[ind+1])
                {
                    min = ind;
                }
            if(min != nbtriees)
            {
               aux = tab[nbtriees];
               tab[nbtriees] = tab[min];
               tab[min] = aux;
            }
                }
 
            }
         /* calculer la moyenne des 5 plus grand salaires (somme puis division par 5) */
       somme = 0;
       for (ind = 0 ; ind < 5 ; ind++)
       {
           somme = somme + tab[ind];
       }
       moy = somme * 1.0 / 5;
 
     /* afficher la position du min au dessus de la moyenne */
       printf("Moyenne des 5 salaires les plus élevés : %d", moy);
 
       return 0;
    }