RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Serv: irc.irc-land.org
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 calcule de moyen

Forum : C
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ C

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGES : [1] [2] [3]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM C

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
nowix
Nouveau membre
Inscrit : 02/10/2007
Messages : 14
Message
#143563
Posté le 02/10/07 à 20:08
algorithme du programme qui saisit des notes , les range dans un tableau et calcule leur moyen dans les cas suivant:

-calcule la moyen de plusieurs eleves , qui peuvent avoir un nombres de note different entre eux

- les affiches comme sa

eleve1: m 11.10
eleve2: m 9.65

j ai fini mon codage il comporte des bugs , mais impossible de trouve ou je pensais c etais un probleme de tableau mais j ai verifier et je pense pas.Le compilage se fait , donc pas une erreur de saisis.

c est un exercices pour l ecole , je prefere pas que on me donne la reponse mais que on me guide !

Merci a tous





/*librairies*/ #include<stdio.h> #include<stdlib.h> /*constante */ #define taillemax1 10 #define taillemax2 10 #define taillemax3 10 int main (void) { /*variable */ int nbnote, i, j, numeroeleve, stop,indiceaffichage; float notetableau[taillemax1][taillemax2]; float moyentableau[taillemax3]; double moyenne; /* ----debut du programme---- */ printf ("saisir nombre de note:"); scanf ("%d", &nbnote); /* ----saisi note ----*/ i = 0; j = 0; do { while (i != nbnote ) { printf ("saisir une note \n"); scanf ("%f", &notetableau[i][j]); i = i + 1; /* Calcule Moyen */ } moyenne = 0; for (i = 0; i < nbnote; i = i + 1) { moyenne = moyenne + notetableau[i][j]; } moyentableau[j] = moyenne / nbnote; j = j + 1; printf ("arrete oui=0 non=1 \n"); scanf ("%d", &stop); } while (stop != 0); /* j ai un probleme au niveau de cette variable, je n arrive pas a continuer la saisi des notes, par contre il me donne la moyen. je commprend dans cette variable, faire (le code)tant que (stop est different de 0 )*/ /* -----affichage moyen ----*/ /* initialisation */ indiceaffichage=j; numeroeleve=0 ; j=0 ; /* autre probleme .quand je demande la moyen il me donne plussieur moyen ex: eleve3 m=0 eleve4 m=0....j ai pourtant bien mit que j=indiceaffichage et que numeroeleve lui est inialise.il devrait compter juste , non?*/ while (indiceaffichage != numeroeleve) { printf ("eleve%d m :%f \n", j, moyentableau[j]); numeroeleve = numeroeleve + 1; j=j+1 ; } /* ----fin du programme---- */ system ("pause"); return (0); }

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

rainbow
Membre du club
Chef de projet(s) :
- IA savane
- Team MoteurProg

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 926
Message
#143565
Posté le 02/10/07 à 21:07
voila ce que j'ai compris dans ton programme:
je l'ai testé et en effet, il fait que au bout d'un moment d'afficher "arrete oui=0 non=1" et ce temps que 0 n'est pas entré. Réfléchi bien : si on met 1 dans stop, la boucle recommence et regarde bien ton "while (i != nbnote )" : tu devrai comprendre que c'est là que ça ne marche pas sur ton programme : tu ne te rends pas compte mais le programme recommence bien la boucle mais ne passe plus ici. Je te laisse trouver la solution de ce problème ;)

Quand au deuxième problème, je ne comprend pas... chez moi ça affiche bien :
"eleve0: m xxxxx
eleve1: m xxxxx"

De même que pour respecter cette phrase
Aucun dit :
-calcule la moyen de plusieurs eleves , qui peuvent avoir un nombres de note different entre eux
il faudrait que tu redemandes le nombre de note pour l'éleve non ?
Si tu pouvais réexpliquer un peu mieux ce qu'il faut afficher et calculer je pourrai peut être mieux t'aider.

ciao

rainbow

€dit : a = a+1; est équivalent de a++; et les parenthèses ne sont pas nécessaire pour ton return (0); Smiley
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

nowix
Nouveau membre
Inscrit : 02/10/2007
Messages : 14
Message
#143582
Posté le 03/10/07 à 18:54
j ai effectue les modifications que tu ma dit , regarde , sa marche bien a part que defois il y a une erreur et sa plante. tu pense sa peux venir de ou ?



/*librairies*/ #include<stdio.h> #include<stdlib.h> /*constante */ #define taillemax1 10 #define taillemax2 10 #define taillemax3 10 int main (void) { /*variable */ int nbnote, i, j, numeroeleve, stop,indiceaffichage; float notetableau[taillemax1][taillemax2]; float moyentableau[taillemax3]; double moyenne; /* ----debut du programme---- */ /* ----saisi note ----*/ i = 0; j = 0; do { printf ("saisir nombre de note:"); scanf ("%d", &nbnote); while (i != nbnote ) { printf ("saisir une note \n"); scanf ("%f", &notetableau[i][j]); i = i + 1; /* Calcule Moyen */ } moyenne = 0; for (i = 0; i < nbnote; i = i + 1) { moyenne = moyenne + notetableau[i][j]; } moyentableau[j] = moyenne / nbnote; j = j + 1; printf ("arrete oui=0 non=1 \n"); scanf ("%d", &stop); i=0; } while (stop != 0); /* j ai un probleme au niveau de cette variable, je n arrive pas a continuer la saisi des notes, par contre il me donne la moyen. je commprend dans cette variable, faire (le code)tant que (stop est different de 0 )*/ /* -----affichage moyen ----*/ /* initialisation */ indiceaffichage=j; numeroeleve=0 ; j=0 ; /* autre probleme .quand je demande la moyen il me donne plussieur moyen ex: eleve3 m=0 eleve4 m=0....j ai pourtant bien mit que j=indiceaffichage et que numeroeleve lui est inialise.il devrait compter juste , non?*/ while (indiceaffichage != numeroeleve) { printf ("eleve%d m :%f \n", j, moyentableau[j]); numeroeleve = numeroeleve + 1; j=j+1 ; } /* ----fin du programme---- */ system ("pause"); return (0); }

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

rainbow
Membre du club
Chef de projet(s) :
- IA savane
- Team MoteurProg

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 926
Message
#143584
Posté le 03/10/07 à 19:08
Aucun dit :
j ai effectue les modifications que tu ma dit , regarde , sa marche bien a part que defois il y a une erreur et sa plante. tu pense sa peux venir de ou ?

Pourrais-tu me dire un cas où chez toi ça plante car j'ai essayé plusieurs fois chez moi et ça marche bien je pense. Et quand ça plante ça fait quoi ?
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

nowix
Nouveau membre
Inscrit : 02/10/2007
Messages : 14
Message
#143585
Posté le 03/10/07 à 19:43
bas je rentre le nombre de note que je souhaite . exemple 2
je rentre 10 par exemple blocage erreur window.

mais c pas tout le temps surement de mon pc.


par contre j aurai aime savoir comment on choisit taillemax car je te l admet je les mit au pif.


merci beaucoups

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Agahaz
Superviseur :
- Réseaux
Modérateur :
- XP / 2000 / .
- Xhtml/Css
- Visual basic
Avatar de Agahaz
Inscrit : 23/06/2005
Messages : 763
Message
#143592
Posté le 03/10/07 à 22:38
Salut

J'ai quelques petites remarques:
Tu pourrais mettre moyenne en float aussi, c'est suffisant.

nowix dit :
je n arrive pas a continuer la saisi des notes, par contre il me donne la moyen. je comprends dans cette variable, faire (le code)tant que (stop est différent de 0 )


Ok, je suis d'accord avec toi. Mais alors ce serait mieux avec printf ("arrete oui=1 non=0 \n"); Smiley


nowix dit :
indiceaffichage=j;
numeroeleve=0 ;
j=0 ;

/* autre problème .quand je demande la moyenne il me donne plusieurs moyennes ex: eleve3 m=0 eleve4 m=0....j ai pourtant bien mis que j=indiceaffichage et que numeroeleve lui est initialise.il devrait compter juste , non?*/


J'ai l'impression avec ton commentaire, qu'il y a des soucis pour les variables... Donc au cas où...
En programmation a=b et b=a, c'est différent !
a=b <=> mets la valeur de b dans a
b=a <=> mets la valeur de a dans b
Et ça fonctionne uniquement dans ce sens là.

Ensuite l'égalité n'est pas actualisée en permanence.
indiceaffichage=j; // mets la valeur de j dans indiceaffichage
j=0; // j sera mis à 0 mais pas indiceaffichage


Et concernant le plantage, ça pourrait venir de taillemax. En fait quand tu fais tableau[10], tu réserves 10 cases mémoires numérotées de 0 à 9. En réalité il y a aussi une 11e case (case n°10), mais elle sert à signaler la fin du tableau (elle est remplie de '\0'.) Si tu modifies la case 10, c'est possible que ça plante mais pas obligé (c'est tout le charme du C Smiley).
Par contre je ne vois pas pourquoi ce serait une "window error". Donc il y a peut être autre chose.

fatma_87 > la boucle sert à faire la saisie + calcul pour plusieurs élèves
__________________________
FAQ Réseau
N'oubliez pas le tag [Résolu]Image (en haut à droite du titre du sujet)
Site perso sur les éoliennes et la programmation
Radio métal

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

rainbow
Membre du club
Chef de projet(s) :
- IA savane
- Team MoteurProg

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 926
Message
#143626
Posté le 04/10/07 à 17:50
Aucun dit :
Tu pourrais mettre moyenne en float aussi, c'est suffisant.

Vu la rapidité des ordinateurs aujourd'hui et les ressources que demande le programme, ce n'est pas important à mon goût.

il faut en effet que tu créés un tableau de taille dynamique pour éviter le dépassement de mémoire. C'est comme si dans une rue comprenant des maisons de "1 rue de la rose" à "40 rue de la rose" le facteur devait poser une lettre au "55 rue de la rose" (il ne fera pas d'erreur windows mais c'est pour l'exemple Smiley)

Après en ce qui concerne les égalités j'avoue ne pas comprendre à quoi servent certaines variables et le calcul que tu essais de faire donc je ne peux pas t'aider de ce côté.
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

nowix
Nouveau membre
Inscrit : 02/10/2007
Messages : 14
Message
#143640
Posté le 04/10/07 à 20:40
Et concernant le plantage, ça pourrait venir de taillemax. En fait quand tu fais tableau[10], tu réserves 10 cases mémoires numérotées de 0 à 9. En réalité il y a aussi une 11e case (case n°10), mais elle sert à signaler la fin du tableau (elle est remplie de '\0'.) Si tu modifies la case 10, c'est possible


donc tu me conseil de metre un grand nombre comme 10 000 pour etre sur?

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

rainbow
Membre du club
Chef de projet(s) :
- IA savane
- Team MoteurProg

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 926
Message
#143660
Posté le 05/10/07 à 15:46
non, ce serait perdre de la vitesse pour le programme. Il faudrait que tu demandes la valeur de taille maximum du tableau et ensuite l'initialiser avec cette valeur ;)
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Spirit
Superviseur :
- C & C++
Modérateur :
- PHP
- Javascript
- MySQL
Avatar de Spirit
Inscrit : 07/04/2004
Messages : 1946
Message
#143665
Posté le 05/10/07 à 18:44
le mieux serait d'utiliser des tableaux dynamiques

sinon, si tu rentres les notes d'un élève à la fois, au lieu d'enregistrer chacune des notes, tu enregistres le total des notes et le nombre de notes entrées puis calcule ta moyenne à la volée, et non après toute la saisie

ça ferait

note totale = 0
nombre de notes entrées
saisie d'une note x => note totale = note totale +x; nombre de notes entrées = nombres de notes entrées +1;

par exemple, pour arreter la saisie, entrer une note de -1
moyenne = note totale / nombre de notes entrées
__________________________
Spirit - modérateur casu ^-^'

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM C



    PAGES : [1] [2] [3]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.