Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1358 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  somme des entiers contenus dans un tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

somme des entiers contenus dans un tableau

n°1377452
the_bigboo
Posté le 30-05-2006 à 12:35:02  profilanswer
 

:hello: bon ben voila, tout est dans le sujet, j'ai essayé de faire  une fonction du genre :

Code :
  1. function SommeOfArray(ArrayPiece)
  2. {
  3. for (var i = 0 ; i <= ArrayPiece.length; i++)
  4. {
  5.         somme = somme + ArrayPiece[i];
  6. }
  7. return somme ;
  8. }


mais ca me renvoi "NaN"
Ici ArrayPiece est un tableau associatif dont chaque élément contient soit 0, soit 1.
 
Un p"tit coup de main serait le bienvenu :)

mood
Publicité
Posté le 30-05-2006 à 12:35:02  profilanswer
 

n°1377456
0x90
Posté le 30-05-2006 à 12:39:47  profilanswer
 

t'oublie d'initialiser somme, donc la première fois qu'il fait somme = somme + ArrayPiece[i] il a somme qui vaut NaN (not a number), et donc Nan + ArrayPiece[i] = Nan, donc somme vaut encore NaN , et ca continue jusqu'à la fin ...
Ajoute un somme = 0; avant ta boucle pour voir ;)


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1377459
the_bigboo
Posté le 30-05-2006 à 12:44:06  profilanswer
 

pas mieux :/
 
en fait le but est de faire un controle de formulaire. Chaque champ est controlé dynamiquement par expression réguliere. Le but etant de crééer un tableau en paralelle et de lui donner en clé le nom HTML du champ et en valeur 0 si l'expression réguliere a échouée et 1 si elle a réussie.
 
A la fin je fais une comparaison sur le nombre total de champs textes dans le formulaire, et je le compare avec la somme du tableau paralelle, S'ils sont egaux, je peux dégriser le bouton de validation. Ca te semble clair ?
 

Code :
  1. var FieldOK = 0 ;
  2. var OneError = false ;
  3. var somme = 0 ;
  4. function SwitchButtonState(Btn,State)
  5. {
  6. if( State )
  7. {
  8.  Btn.disabled = false ;
  9.  Btn.className = 'button_' ;
  10. }
  11. else
  12. {
  13.  Btn.disabled = true ;
  14.  Btn.className = 'button_disabled' ;
  15. }
  16. }
  17. function CheckField(FieldName)
  18. {
  19. var LengthForm = GetInputBoxInto(document.forms['new_item']) ;
  20. CheckField = new Array() ;
  21. RegExToCheck = GetExpressionFor( FieldName.name ) ;
  22. if( !RegExToCheck.test( FieldName.value ) )
  23. {
  24.  // Erreur sur les regex
  25.  OneError = true ;
  26.  document.getElementById( FieldName.name ).style.visibility = 'visible' ;
  27.  CheckField[FieldName.name] = 0 ;
  28. }
  29. else
  30. {
  31.  document.getElementById( FieldName.name ).style.visibility = 'hidden' ;
  32.  CheckField[FieldName.name] = 1 ;
  33. }
  34. alert( SommeOfArray( CheckField ) + ' et ' + LengthForm ) ;
  35. // Si le nombre de champs OK correspond au nombre de champ a remplir on dégrise
  36. if( SommeOfArray( CheckField ) == NbBox )
  37. {
  38.  SwitchButtonState(document.getElementById('BtnOk'),true);
  39.  }
  40.  else
  41. {
  42.    SwitchButtonState(document.getElementById('BtnOk'),false);
  43. }
  44. }
  45. function GetInputBoxInto(Formulaire)
  46. {
  47. NbBox = 0 ;
  48. i = -1;// du premier au dernier... faire...
  49. while (++i < Formulaire.elements.length)
  50. {
  51.  if(Formulaire.elements.item(i).type != 'button' && Formulaire.elements.item(i).type != 'submit')
  52.  {
  53.   NbBox++ ;
  54.  }
  55. }
  56. return NbBox ;
  57. }
  58. function SommeOfArray(ArrayPiece)
  59. {
  60. somme = 0 ;
  61. for (var i = 0 ; i <= ArrayPiece.length; i++)
  62. {
  63.         somme = somme + ArrayPiece[i];
  64. }
  65. return somme ;
  66. }


Message édité par the_bigboo le 30-05-2006 à 12:45:41
n°1377542
Bidem
Posté le 30-05-2006 à 14:09:02  profilanswer
 

Citation :

for (var i = 0 ; i <= ArrayPiece.length; i++)


 
Il y a une itération de trop et donc ArrayPiece[ArrayPiece.length] doit retourner un truc comme 'undefined'
 
i < ArrayPiece.length devrait mieu marcher


Message édité par Bidem le 30-05-2006 à 14:09:52
n°1377550
the_bigboo
Posté le 30-05-2006 à 14:16:37  profilanswer
 

non pas mieux :/
 
Il me dit que CheckField n'est pas une fonction  :cry:  :cry:


Message édité par the_bigboo le 30-05-2006 à 14:16:48
n°1377555
Bidem
Posté le 30-05-2006 à 14:25:11  profilanswer
 

héhé
 

Code :
  1. function CheckField(FieldName)
  2. {
  3.   ...
  4.   CheckField = new Array() ;
  5. }


 
ça sent le conflit entre ta fonction CheckField et ta variable du même nom...
Je crois que Javascript ne gère qu'un namespace pour les fonctions et les variables, donc il faut que tu utilises un autre nom pour ta variable


Message édité par Bidem le 30-05-2006 à 14:25:45
n°1377565
Arjuna
Aircraft Ident.: F-MBSD
Posté le 30-05-2006 à 14:33:50  profilanswer
 

< et pas <= (dans le source du début)
 
j'ai pas lu le reste.
 
en tout cas, le <= fait un dépassement de capacité dans le array, donc vu que js ne plante pas, il ajoute <portnawak> et nb + <portnawak> = NaN

n°1377566
the_bigboo
Posté le 30-05-2006 à 14:34:34  profilanswer
 

haaaaaaaaaa !!!! Bien vu l'artiste !

n°1377568
Arjuna
Aircraft Ident.: F-MBSD
Posté le 30-05-2006 à 14:34:54  profilanswer
 

/me retourne se coucher, la tempête est déjà loin en fait :D

n°1377572
Arjuna
Aircraft Ident.: F-MBSD
Posté le 30-05-2006 à 14:35:23  profilanswer
 

bidem avant déjà répondu avant en fait ;) idem pour ton autre problème de checkfield ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  somme des entiers contenus dans un tableau

 

Sujets relatifs
Supprimer une ligne d'un tableau[Php] - Tableau & Arbre: problème algorithmique
Tableau de pointeur en c++Aide sur un tris de tableau
[C] Copier un fichier octet par octet dans un tableauPetite question sur les tris de tableau
charger une image dans un tableau videTri de tableau semi-aleatoire
Effectuer une action sur la selection d'une ligne d'un tableau[Caml]Tableau
Plus de sujets relatifs à : somme des entiers contenus dans un tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR