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 : 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 #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; }
Oui elle est plus grosse, je suis content pour toi, évidemment que selon l'énoncé on adapte, ce n'est qu'un exempleà 33, la banque elle saute
EDIT: Pour le plaisir,
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 #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![]()
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 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 : 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 // 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; }
Partager