rendu d'argent
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

rendu d'argent



  1. #1
    inviteeaf05b96

    rendu d'argent


    ------

    bonjour
    bon je serais bref,
    mon code est quasi fini, les erreurs restantes sont dues a la fonction thirdpage () et surtout l'algo qui permet de dire l'argent que chaque personne dois aux autres.
    Le problème est que je ne sais pas d'ou vient l'erreur, j'ai l'impression que l'algo est juste mais pourtant je me tape des undefined dans la reponse :/

    voici mon code:
    Code HTML:
    <html>
    <head>
    	<title>exercice finale</title>
    	<script language="javascript" >
    		var personnes;
    		var addition;
    		
    		function secondpage() //page2
    			{
    				personnes=parseFloat(document.formulaire1.personnes.value);  //variable personnes    =/=
    			
    				//construction de la page 2
    				var page2='<form name="formulaire2">';
    				page2+='<table style="border:2px solid green">';
    				page2+='<tr><td>';
    				for( var pers=0 ; pers < personnes ; pers++ )
    					{	
    						page2+='<p>'
    						page2+='nom de la personne '+parseFloat(pers+1)+': ';
    						page2+='<input type="text" name="nom" value="nom" size="20"><br> ' ;               //champ de saisie nom de la personne
    						page2+="argent qu'elle a donné: ";                                                      
    						page2+='<input type="text" name="argent" value="argent" size="20"><br> ';        //champ de saisie argent donné
    						page2+='</p>'
    					}
    				page2+='<input type="button" value="continuer" onclick="thirdpage();"> ' ;            //bouton continuer 2
    				page2+='</td></tr>';
    				page2+='</table>';
    				page2+='</form>';
    					
    					document.getElementById("formu1").innerHTML=page2;       //remplacement de la page 1			
    			}
    		
    		function thirdpage() //page3
    			{	
    				
    				addition=parseFloat(document.formulaire1.addition.value);                        //argent total donné au serveur
    				var moyenne=addition/personnes;   				                                //ce que chaque personne est sensé payer
    				var nom=new Array();
                    var argent=new Array();
    				var solde=new Array();
    				var total=0;
    				
    				for( var i=0;i<personnes;i++)                                         //creation de matrice pour chaque personne
    				{
    					nom[i]=document.formulaire2.nom[i].value;                       //creation matrice prix par personne
    					argent[i]=parseFloat(document.formulaire2.argent[i].value);
    					solde[i]=argent[i]-moyenne;
    					
    					total += argent[i]; 
    				}	                                      
    				
    				nom[personnes]="Le serveur";
    				solde[personnes]=total-addition;
    				
    				//calcul du rendu de l'argent
    				var textebilan=new Array();                                                                            // ! ! !! ! !! ! !! ! !! ! !! !  ERREUR dans le calcul de rendu
    				for ( i=0;i<=personnes;i++)  				 //serveur inclus
    				{
    				for (var j=0;j<=personnes;j++)
                                                              //trouvera 0 au bout de la boucle si on prend le serveur en compte
    					{
    						if(solde[i]>0&&solde[j]<0)              
    						{
    							if(solde[i]>-solde[j])
    							{
    								textebilan[i]+="<b>"+nom[i]+"</b> doit <u>"-(solde[j])+" euro</u> à <b>"+ nom[j]+"</b><br>";             //[] check variables personnes a partir de 1 et i a partir de 0 ACHTUNG
    								solde[i]+=solde[i]+solde[j];                                                                                    // i et j inversé voir avec 2 et 20
    								solde[j]=0;
    							}
    							else
    							{
    								textebilan[i]+="<b>"+nom[j]+"</b> doit <u>"+(solde[i])+" euro</u> à <b>"+ nom[i]+"</b><br>";
    								solde[j]=solde[j]+solde[i];
    								solde[i]=0;
    							}
    							//alert("test"+textebilan[0]+"");
    						}
    					}
    				}
    				
    
    				//construction de la page 3
    				var page3='<table style="border:2px solid red">';
    					page3+='<tr><td>';
    				
    					//page3+='<b>le serveur</b> rend <u>'+solde[personnes]+'euro </u>';
    				for( var pers=0; pers<=personnes; pers++)                                      
    					{
    						page3+='<p>';
    						//page3+='<b>le serveur</b> rend <u>'+textebilan[personnes]+'</u>';
    					//if (solde[j]!=0||solde[i]!=0)
    							{
    								page3+=''+textebilan[pers]+'';
    							}
    						//page3+='testnom='+nom[pers]+'<br>testargent : '+argent[pers]+'<br>solde:'+solde[pers]+'<br>textebilan:'+textebilan[pers]+'<br>';    
    						page3+='</p>';
    					}
    						// page3+='test addition de '+addition+'<br>test moyenne: '+moyenne+'';
    					page3+='</td></tr>';
    					page3+='</table>';
    				document.getElementById("formu1").innerHTML=page3;
    			}
    			
    		
    	</script>
    </head> 
    
    <body> 
    
    	<h1> Remise d'argent </h1>
    
    	<!--page 1-->
    	<p id="formu1">
    	<table style="border:2px solid blue">
    		<tr><td>
    		<form name="formulaire1">
    			Nombre de personnes: <br>
    				<input type="text" name="personnes" value="3" size="20"><br> <!--champ de saisie personnes-->
    			Montant totale de l'adition:<br>                                                      
    				<input type="text" name="addition" value="30" size="20"><br> <!--champ de saisie prix total--> <!--CHANGER LES CHAMPS INNITIALES-->
    				<input type="button" value="continuer" onclick="secondpage();"> <!--boutton continuer 1--->  
    		</form>
    		</td></tr>
    	</table>
    	</p>
    
    </body>
    </html>	
    	
    en vous remerciant d'avance

    -----

  2. #2
    inviteccac9361

    Re : rendu d'argent

    Bonjour,

    Quelles valeurs peut prendre la variable "personnes" ?
    ici
    Code:
    personnes=parseFloat(document.formulaire1.personnes.value);  //variable personnes
    Il existe une limitation à la declaration d'un array d'après ce que je vois, peut être une piste ?
    Citation Envoyé par lehtml
    On notera que, "le nombre d'éléments est limité à 255. Cette restriction ne figure pas dans la documentation de Netscape mais elle a été constatée expérimentalement." Source : Javascript de Michel Dreyfus Collection Mégapoche.
    http://www.lehtml.com/js/array.htm

  3. #3
    inviteeaf05b96

    Re : rendu d'argent

    je fais les test avec personnes=3 donc le problème doit venir d'autre part
    mais merci pour ta réponse

  4. #4
    invite4492c379

    Re : rendu d'argent

    Hello,

    je ne suis pas expert en javascript, néanmoins j'ai quelques questions :

    Quand j'exécute ta page, chrome me donne une erreur sur

    addition=parseFloat(document.f ormulaire1.addition.value);
    addition est undef, formulaire1 ne serait onc plus accessible ???
    à quoi sert ta variable globale addition ???
    tu crées plusieurs champs dont le name est nom, il s'y retrouve ensuite javascript avec tes

    nom[i]=document.formulaire2.nom[i].value;

  5. A voir en vidéo sur Futura
  6. #5
    inviteeaf05b96

    Re : rendu d'argent

    je pense que t'as mis le doigt sur quelque-chose avec la variable non-reconnue,
    ma variable globale sert a faire le lien entre le formulaire dans l'html et l'interrieur des fonctions, par contre je ne comprend pas, il me mettent que addition n'est pas reconnue pourtant quand je met un
    alert(''+addition+'') dans la fonction thirdpage() cela m'affiche correctement la valeur rentré dans addition :/

Discussions similaires

  1. compte rendu
    Par invite9e46535d dans le forum Géologie et Catastrophes naturelles
    Réponses: 2
    Dernier message: 02/06/2010, 13h05
  2. Compte rendu
    Par invite38cbfd52 dans le forum Chimie
    Réponses: 2
    Dernier message: 15/02/2009, 15h49
  3. Rendu Osler
    Par invite962e0d9b dans le forum Santé et médecine générale
    Réponses: 7
    Dernier message: 03/10/2008, 17h12
  4. Rendu osler
    Par Non inscritkouider08 dans le forum Santé et médecine générale
    Réponses: 1
    Dernier message: 24/02/2008, 01h10
  5. compte rendu
    Par invite1b4f2f6f dans le forum Psychologies (archives)
    Réponses: 1
    Dernier message: 02/12/2005, 00h45