Tu as raison :mrgreen: mais sounsoun n'a pas dit dès le début que c'était un besoin. C'était après dans le fil.
Par contre sounsoun veut afficher les notes prises en compte, et ça l'algo de fred1599 ne le fait pas :mrgreen:
Version imprimable
Le fait de supprimer toutes les notes mini est complètement incohérent, si l'élèves à ces notes par exemple : 18, 0, 0, 0, 0
Alors le mec a 18 de moyenne, il suffit d'avoir bossé une fois et plus rien branler par la suite. Ce n'est plus un exercice concret ! Difficile de savoir si Sounsoun a bien compris son énoncé...
EDIT: Dans le cas où on reste cohérent dans l'énoncé, voilà les notes prises en compte en ajoutant un tableau
Code:
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 #include <stdio.h> int main(void){ float note; float somme=0; int n=0, flag=0, i; float mini=1000; float notes[32]; while (1){ printf("Entrer votre note :"); scanf("%f", ¬e); if (note == -1) break; if (note < mini) mini = note; notes[n] = note; somme += note; n += 1; } for (i=0; i<n; i++){ note = notes[i]; if (note == mini && flag == 0) flag = 1; else printf("%f ", note); } putchar('\n'); printf("La moyenne est de: %f", (somme-mini)/(n-1)); return 0; }
à 33, la banque elle saute :aie: :aie: :aie:
Oui elle est plus grosse, je suis content pour toi, évidemment que selon l'énoncé on adapte, ce n'est qu'un exemple :roll:Citation:
à 33, la banque elle saute
EDIT: Pour le plaisir,
Code:
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 #include <stdio.h> #include <stdlib.h> int main(void){ float note; float somme=0; int n=0, flag=0, i; float mini=1000; float *notes = malloc(sizeof(float)); float *p = NULL; while (1){ printf("Entrer votre note :"); scanf("%f", ¬e); if (note == -1) break; if (note < mini) mini = note; notes[n] = note; somme += note; n += 1; p = realloc(notes, sizeof(float) * (n+1)); if (p != NULL) notes = p; } for (i=0; i<n; i++){ note = notes[i]; if (note == mini && flag == 0) flag = 1; else printf("%f ", note); } putchar('\n'); printf("La moyenne est de: %f", (somme-mini)/(n-1)); free(notes); return 0; }
Au lieu de coder comme un goret un while(true), on peut coder autrement :mrgreen: :mrgreen:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 float note, somme=0, mini=1000; int n=0, i; float notes[32]; unsigned char not_finished = 1; for (n = 0; ((n < 32) && not_finished); ++n) { printf("Entrer votre note :"); scanf("%f", ¬e); if (note != -1) { if (note < mini) { mini = note; } notes[n] = note; somme += note; n += 1; } else { not_finished = 0; } }
J'ai vu mon erreur je devais initialiser min a une grande valeur
Code:
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 // note. #include <stdio.h> #define TAILLE 10 int main () { int n,i,j=0; /* j pour l'indice du min*/ float T1[TAILLE],s=0, moy,min=1000; do { printf("Nombre de valeur à fournir (2=<n<=10):"); scanf("%d", &n); } while(n<2 || n>TAILLE); printf("\n******************Définition de T1*************"); for(i=0; i<n; i++) { printf("\nValeur à mettre dans T1[%d]:", i+1); scanf("%f", (T1+i)); s+=*(T1+i); if(min>T1[i]) min=T1[i]; } for(i=0; i<n; i++) { if(min==T1[i]) j++; } moy = ((s-(j*min))/(n-j)); printf("\nNotes pris en compte dans la moyenne:"); for(i=0; i<n; i++) { if(T1[i]!=min) printf("\n%.2f", *(T1+i)); } printf("\nMoyenne = %.2f", moy); return 0; }