Salut,
Je fais un programme de moyenne de notes, ecart type et médiane.
J'ai presque aboutit, sauf que pour la partie pour avoir la médiane, je dois bien sur trier mon tableau de notes.
Le problème c'est que mon tri ne marche que pour 2 et 3 notes.Après ça fait n'importe quoi. ( ma recherche de médiane marche bien, car j'avais testé sans
tri, et j'avais bien la valeur centrale).
Je n'arrive pas à trouver l'erreur
Mon bout de programme sur le tri du tableau est situé ligne 68 à 80.
Cordialement

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
 
#include <stdio.h>         // Directives de preprocesseur.
#include <stdlib.h>
#include <math.h>
 
int main (void)        // Debut de la fonction.
{
    int N = 0, i = 0, mediane_1 = 0, j=0, k=0, t=0;// Creation des variables.
    float Ai = 0, S1 = 0, S2 = 0, M = 0;
    double V = 0, Ec = 0, noteMin = 20, noteMax = 0,tab[i],mediane = 0;
    printf ("Programme de calcul de la moyenne et ecart type de notes .\n"); // Message d'accueil.
    printf ("\nEntrez le nombre de cours : ");                               // Saisie du nombre de cours.
    scanf ("%d", &N);             // Nombre de cours stocke dans la variable "N".
 
    for (i=0;i<N;i++)            // Initialisation de la boucle for , avec i allant de 1 jusqu'a�N par pas de 1.
    {
      printf ("\nEntrez les notes : "); // Saisie des notes une par une.
	  scanf ("%f", &Ai);
	                                    // Stockage des notes dans la variable Ai.
	  while(Ai < 0 || Ai > 20 )
      {
       printf("\nErreur!\nEntrez la note : "); // Affichage d'un message d'erreur lorsque Ai < 0
       scanf ("%f", &Ai);
      }                                       // et lorsque Ai > 20.L'utilisateur doit redonner une note.
      tab [i] = Ai;
      S1 = S1+Ai;                 // Incrementation de la somme des notes.
      S2 = S2+Ai*Ai;              // Incrementation du carre de la somme des notes.
 
      if (Ai > noteMax)           // Structure if permettant de trouver la note maximale.
      {
        noteMax = Ai;
      }
      else
      {
        noteMax = noteMax;
      }
      if (Ai < noteMin)           // Structure if permettant de trouver la note minimale.
      {
        noteMin = Ai;
      }
      else
      {
        noteMin = noteMin;
      }
    }  // Fin de la boucle For.
 
    M = S1/N;        // Calcul de la moyenne.
    V = S2/N-M*M;    // De la variance.
    Ec = sqrt (V);   // Et de l'ecart type.
    printf ("\nLa moyenne est : %f\nL'ecart type est : %lf\nNote maximale: %f\nNote minimale: %f\n", M, Ec, noteMax, noteMin); // Affichage de la moyenne, de l'�ecart type, de la note maximale et minimale.
 
    if (M < 10)                              // Structure if permettant d'ajouter des commentaires
      {
        printf ("Vous etes ajourne.\n");
      }                                      // en fonction de la moyenne ( M<10 : ajourne,M>10 :admis,
    else                                     // M>15 : avec mention tres� bien, M>12 : mention bien.
      {
        printf ("Vous etes admis.\n");
      }
    if (M >= 15)
      {
        printf ("Avec mention tres bien.\n");
      }
    else if (M >= 12)
      {
        printf ("Avec mention bien.\n");
      }
 
   for (t=1; t < N; t++)     //tri des notes
     {
 
     for(j=0; j < N - 1; j++)
      {
        if(tab[j] > tab[j+1])
         {
            k= tab[j] - tab[j+1];
            tab[j] -= k;
            tab[j+1] += k;
         }
      }
     }
 
      if (N%2 == 0) //pair                MEDIANE
	  {
		mediane = (tab[N/2]+tab[(N/2)-1])/2;
      }
	  else if(N%2 == 1)  //impair
	  {
	   	mediane = N/2;
		mediane_1 = ceil(mediane);
		mediane = tab[mediane_1];
      }
   printf("\nRecapitulatif:\nVoici vos notes, votre moyenne et mediane!\n");
   for (i=0; i<N; i++)
      {
       printf("tab[%d] = %f\n", i, tab[i]);
      }
    printf ("Moyenne :%f\n",M);
    printf("Mediane :%f",mediane);
return 0 ;                                    // Fin de la fonction.
}