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; }
Partager