Programmation C

Résolu/Fermé
bambaa Messages postés 3 Date d'inscription lundi 18 avril 2011 Statut Membre Dernière intervention 20 avril 2011 - 19 avril 2011 à 00:38
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 20 avril 2011 à 08:41
Bonjour,
salut à tous je voudrais qu'on me corrige ce code qui sert à calculer la moyenne...
le programme calcule la moyenne dès qu'on entre une note négative.
j'arrive à calculer mais ca ne tombe pas juste .
SC = somme des coefficients
som = somme des notes


#include <stdio.h>
#include <stdlib.h>

int main()
{
int i ;
float moy, note, som, SC, coef ;
note=0 ;
coef=0 ;
i=1 ;

while ( printf("Entrez note %d:",i), scanf("%f",¬e), printf("Entrez le coefficient %d:",i), scanf("%f",&coef),note >= 0 && note <= 20)
{
som = (note * coef) + som ;
SC = coef + SC ;
moy = som/SC ;
i++ ;
}
if (som < 0 || SC < 0)
{
printf("Donnees incorrectes!\n");
}
else

printf("la moyenne de cet etudiant est de %2.2f\n",moy);

return 0;
}



4 réponses

Vicking54 Messages postés 89 Date d'inscription lundi 11 octobre 2010 Statut Membre Dernière intervention 17 mai 2011 26
19 avril 2011 à 09:42
hum je dirais que ca serait pas mal d'initialiser tes variables avant comme :
som = 0;
moy = 0;
SC = 0;

donc voila ce que ca donnerais :

int main()
{
int i;
int NbNote = 0;
float moy=0;
float note = 0;
float som = 0;
float SC = 0 ;
float coef = 0 ;

printf("Combien de note voulez vous Saisir : ");
scanf("%d",&NbNote);

for(i=0; i<NbNote ; i++)
{
do
{
printf("Entrez note :");
scanf("%f",¬e);
fflush(stdin);
}while(note <0 || note >20);

do
{
printf("Saisir le coeficient :");
scanf("%d",&coef);
fflush(stdin);
}while(coef >=1);

som = (note * coef) + som ;
SC = coef + SC ;
moy = som/SC ;
}

if (som < 0 || SC < 0)
{
printf("Donnees incorrectes!\n");
}
else
{
printf("la moyenne de cet etudiant est de %2.2f\n",moy);
system("PAUSE>nil");
}

return 0;
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
20 avril 2011 à 08:37
fflush(stdin);
Ce n'est pas un comportement défini... Il ne faut jamais utiliser fflush(stdin).
0
geek-face Messages postés 89 Date d'inscription vendredi 8 avril 2011 Statut Membre Dernière intervention 5 mai 2011 9
19 avril 2011 à 09:48
Bonjour,

tu pourrais envoyer l'algorithme car comprendre un programme tel qu'il est dans ta tête est compliqué.

Merci
0
malaik5 Messages postés 258 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 28 novembre 2013 33
19 avril 2011 à 09:50
Essayes de faire avec ce code là:



#include <stdio.h>
#include <stdlib.h>

int main()
{
int i ;
float moy, note, som, SC, coef ;
som = 0;
SC = 0;
i=1 ;

while (note >= 0 && note <= 20)
{
(printf("Entrez note %d:",i),
scanf("%f",¬e),
printf("Entrez le coefficient %d:",i),
scanf("%f",&coef)

if (SC < 0)
{
printf("Donnees incorrectes!\n");
}
else
{
som = (note * coef) + som ;
SC = coef + SC ;
moy = som/SC ;
i++ ;
}
}


printf("la moyenne de cet etudiant est de %2.2f\n",moy);

return 0;

}


Remarques sur le precedent algo:
* Tes initialialisations : je pense que tu deverais les remplacer par ce que j'ai mis.
* le if à l'interieur du while ne sert à rien: à la rigueur tu peux laisser que SC <0 puisque la somme ne sera jamais négative vue la façon de l'algo comment il est fait.

jattends ton rertour, tiens moi au courant0
0
Vicking54 Messages postés 89 Date d'inscription lundi 11 octobre 2010 Statut Membre Dernière intervention 17 mai 2011 26
19 avril 2011 à 10:20
malaik5 la ton algo fera la saisie d'une seule et unique note celui que j'ai mis à disposition génère un nombre définit de note ce qui est mieux je pense car tu pourras faire le calcul d'une grosse moyenne.
0
malaik5 Messages postés 258 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 28 novembre 2013 33
19 avril 2011 à 10:26
non il fera plusieurs saisi tant que la note n'est pas négative et n'est pas sup à 20, il demandera tjr de rentrer des notes
;)
0
Vicking54 Messages postés 89 Date d'inscription lundi 11 octobre 2010 Statut Membre Dernière intervention 17 mai 2011 26
19 avril 2011 à 10:30
oui c'est sur mais ce que je veux dire c'est qu'il prendra pas en compte si l'utilisateur doit entrer 10 notes avec 10 coefficients
0
malaik5 Messages postés 258 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 28 novembre 2013 33
19 avril 2011 à 10:32
et pourquoi pas, tant que ces notes sont positives et sont <=20, pas de soucis,
au fait moi je me suis tenu aux criteres definies par le mec qui posté le probleme apres si tu veux faire autrement t'as des multitudes de façons
0
Vicking54 Messages postés 89 Date d'inscription lundi 11 octobre 2010 Statut Membre Dernière intervention 17 mai 2011 26
19 avril 2011 à 10:34
oui enfin je trouvais pas ca judicieux en tous cas le post est résolu il a 2 propositions qui marche bien
0
bambaa Messages postés 3 Date d'inscription lundi 18 avril 2011 Statut Membre Dernière intervention 20 avril 2011
19 avril 2011 à 09:50
merci pour la reponse voila l'exo

Ecrire un algorithme qui demande successivement des notes et les coefficients d'un étudiant à
l'utilisateur, la série de notes que doit saisir l'utilisateur s'arrête au moment où ce dernier entre une
note inferieur à zéro ou supérieure à 20
Le programme doit afficher ensuite la moyenne de l'étudiant.
Ex :
Donner note 1 :12
Donner coefficient 1 :4
Donner note 2 : 13
Donner coefficient 2 : 2
Donner note 3 : 15
Donner coefficient 3 : 3
Donner note 1 : -11
Donner coefficient 1 :4
La moyenne de l'étudiant est : 13.22 / 20
merci
0