Problème d'accéder a des valeurs dans un tableau associatif [Résolu/Fermé]

Signaler
Messages postés
58
Date d'inscription
dimanche 6 janvier 2013
Statut
Membre
Dernière intervention
27 octobre 2014
-
Messages postés
58
Date d'inscription
dimanche 6 janvier 2013
Statut
Membre
Dernière intervention
27 octobre 2014
-
Bonjour,

j'ai un petit problème dans la fonction "calculer_moyenne" qui calcule des valeurs dans un tableau associatif ,
lorsque j'appuie sur la bouton "moyenne" le programme n'affiche pas le résultat attendu

aidez moi svp :)
merci d'avance


<html>
<head>
<style type="text/css">
ul { color: blue }
.couleurLi { color:black;font-style:italic;font-weight:bold; }
</style>
<script language="javascript">

function Etudiants(a,b,c)
{	this.Ncin=a;
	this.NonPrenom=b;
	this.TabNote=c;
	this.TabMatiere=null;

		this.afficher=function()
			{
				document.write("<ul>");
				document.write("<li>");
				document.write("<span class=couleurLi>");
				document.write("Ncin: "+this.Ncin+"<br/>");
				document.write("</span>");
				document.write("</li>");
				document.write("<li>");
				document.write("<span class=couleurLi>");
				document.write("Nom et Prenom: "+this.NonPrenom+"<br/>");
				document.write("</span>");
				document.write("</li>");
				document.write("<li>");
				document.write("<span class=couleurLi>");
				document.write("TabNotes: <br/>");
				document.write("<br/>");
				document.write("<table border=1 cellspacing=0 bordercolor=#3BB9FF>");
				document.write("<font color=#4E387E>");
				document.write("<tr>");
		
				for(i in this.TabNote)
				{
				document.write("<td><b>"+i+"</b></td>");
				}
				document.write("</tr>");
				document.write("<tr>");

				for(i in this.TabNote)
				{
				document.write("<td>"+this.TabNote[i]+"</td>");
				}

				document.write("</tr>");
				document.write("</font>");
				document.write("</table>");
				document.write("<br/>");
				document.write("<li>");
				document.write("<span class=couleurLi>");
				document.write("TabMatiere: <br/>");
				document.write("<br/>");
				document.write("<table border=1 cellspacing=0 bordercolor=#3BB9FF>");
				document.write("<tr>");
		
				for(i in this.TabMatiere)
				{
				document.write("<td><b>"+i+"</b></td>");
				}

				document.write("</tr>");
				document.write("<tr>");

				
				for(i in this.TabMatiere)
				{
				document.write("<td>"+this.TabMatiere[i]+"</td>");
				}

				document.write("</tr>");
				document.write("</table>");

			}
				
				document.write("</span>");
				document.write("</li>");
				document.write("</ul>");


						this.setTabM=function(v)
							{
								this.TabMatiere=v;

							}
}


Etudiants.prototype.calculer_moyenne=function()
	{ 
		s=0;
		x=0;
		
		for(i in this.TabNote)
		{
			s=s+(this.TabNote[i]*this.TabMatiere[i]);
			x=x+this.TabMatiere[i];		
		}

		w=s/x;
		return(w);
		
	}

</script>
</head>
<body>


		<script language="javascript">
			tab1={Algorithme:"12",Web1:"13",Web2:"15"};
			tab2={Algorithme:"2",Web1:"3",Web2:"5"};
			e1=new Etudiants("12345678","Ali Ben Salah",tab1);
			e1.setTabM(tab2);
			e1.afficher();
			
   		</script>
		<br>
		<br>
<input type="button" value=" moyenne " onclick="alert(calculer_moyenne())">

</body>
</html>

2 réponses


Bonjour

1er problème : calculer_moyenne est une méthode, il faut l'appeler avec un objet :
onclick="alert(e1.calculer_moyenne())

2 ème problème : tes notes sont des chaînes. Quand tu ajoutes les coefficients, (x=x+this.TabMatiere[i]) tu les concatènes et tu obtiens 0235 au lieu de 10, ce qui se voit facilement en faisant un alert (s+" "+x); dans calculer_moyenne

Deux solutions, définir tes coefficients comme des nombres :
  tab2={Algorithme:2,Web1:3,Web2:5};

ou utiliser parseInt pour transformer les chaînes en nombres :
x=x+parseInt(this.TabMatiere[i]);
Messages postés
58
Date d'inscription
dimanche 6 janvier 2013
Statut
Membre
Dernière intervention
27 octobre 2014

vraiment merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii bcp tu m'a sauvé ;)