Vérification d'une procédure [Résolu]

Messages postés
58
Date d'inscription
lundi 1 novembre 2010
Statut
Membre
Dernière intervention
4 décembre 2018
- - Dernière réponse : mkhadi
Messages postés
58
Date d'inscription
lundi 1 novembre 2010
Statut
Membre
Dernière intervention
4 décembre 2018
- 29 juin 2012 à 02:13
salut voici mon fonction est il logique et jus t ?????
 double[] Henon_Lozi(double x0,double y0,int le_pas){
  // on peut utiliser : a 1.4 et b 0.3.

       double a=1.7 ;
       double b=0.5;
     double[] X =new double[v];
      X[0]=x0;
       double[] Y =new double[v];
       Y[0]=y0;
       if(le_pas==1){
       for ( i = 1; i < X.length; i++) {
         //double d = T[i];
         X[i]=1+Y[i-1]-a*(Math.abs(X[i-1]));
         Y[i]=b*X[i-1];
       }
     }else
       if(le_pas==2){
       while(i<v*2) {
        i=i+2;
         X[i]=1+Y[i-2]-a*(Math.abs(X[i-2]));
         Y[i]=b*X[i-2];
       }
     }else

       if(le_pas==3){
       while(i<v*3) {
        i=i+3;
         X[i]=1+Y[i-3]-a*(Math.abs(X[i-3]));
         Y[i]=b*X[i-3];
       }
     }else
          if(le_pas==4){
       while(i<v*4) {
        i=i+3;
         X[i]=1+Y[i-4]-a*(Math.abs(X[i-4]));
         Y[i]=b*X[i-4];
       }
     }
return(X);
}


quand j'appele a cette fonction j'ai erreur

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 31
tel que le_pas entre 1--5
aide mois svp
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
9
3
Merci
private static final int DEEP_SIZE = 50; // je ne connais pas la valeur de 'v' mais ce ne peut être qu une constante vu sont emploi... dans tous les cas une variable externe à la porté courante doit toujours avoir un nommage explicite et clair...

private static final double CONST_A=1.7; 
private static final double CONST_B=0.5;

 double[] computeHenonLozi(double xFirst,double yFirst,int lePas){
  // on peut utiliser : a 1.4 et b 0.3.
       double[] x =new double[DEEP_SIZE];
       double[] y =new double[DEEP_SIZE];
       x[0]=xFirst;
       y[0]=yFirst;
       for ( int i = lePas; i < x.length; i+=lePas) {
         x[i]=1+y[i-lePas]-CONST_A*(Math.abs(x[i-lePas]));
         y[i]=CONST_B*x[i-lePas];
       }
  return(x);
}



Voici le travail maché... pffff
ceci est équivalent à tout ton code ... moins, bien sur les horreurs d'écritures et de raisonnements...



GodConan ;o)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 205 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_GodConan
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
0
Merci
Salut,

Les éléments des tableaux sont numérotés à partir de 0 donc

 for ( i = 0; i < X.length-1; i++) {
Commenter la réponse de cs_Julien39
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
9
0
Merci
yo

-quel est la valeur de v?
-le respect des conventions...!!!
-pourquoi ce rateau?!! tous ce code se résume à une et une seule boucle FOR....


GodConan ;o)
Commenter la réponse de cs_GodConan
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
0
Merci
Oui, effectivement, je n'avais pas lu le code précisément et tu peux utiliser ca :

 while(i<v*pas) {
        i+=pas;
         X[i]=1+Y[i-pas]-a*(Math.abs(X[i-pas]));
         Y[i]=b*X[i-pas];
Commenter la réponse de cs_Julien39
Messages postés
58
Date d'inscription
lundi 1 novembre 2010
Statut
Membre
Dernière intervention
4 décembre 2018
0
Merci
salut

Monsieur GodConan merci a votre attention :
la valeur de v c'est 30
la convention de java ??? j'est pas compris " par ce que je suis une débutant "
je peut pas résumer ce code dans 1 seul boucle par ce que fonctionner sur la valeur de pas aussi for ila va incrémenter toujours par 1 .

Monsieur julien merci a votre proposition de cette solution le i incrémenter par 1 car il y a les valeur initial X0 ....etc
j'essayer ce code mais le méme probléme
Commenter la réponse de mkhadi
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
9
0
Merci
ici ta bouvle ne fonctionne que pour un pas de 1 ...
puisse que dans tout les autres cas tu multipli la limite de i par le pas....
il te faut revoir to algo...
et je persiste ;o) : UNE seule boucle FOR...

la limite de parcour d un tableau reste toujours la meme ... SA TAILLE ...
sinon l "OutOfBoundsException" est inévitable.... ;o)

GodConan ;o)
Commenter la réponse de cs_GodConan
0
Merci
Bweurk, je trouve dommage de faire un enchainement de if/else où les conditions sont des valeurs entières. Un bon vieux switch/case est plus propre et plus clair :) Et y'a moyen de factoriser le code car il y a pas mal de lignes redondantes où le peu de différence qu'il y a réside dans une petit valeur qui se trouve être ton pas.


--
Pylouq
(Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)
Commenter la réponse de Utilisateur anonyme
Messages postés
58
Date d'inscription
lundi 1 novembre 2010
Statut
Membre
Dernière intervention
4 décembre 2018
0
Merci
salut
merci a votre remarque
[list]

/listdans le cas le_pas égale a 1 c'est fonctionner bien mais avec au plus 2

[list]

dans le cas de plus if je ne considérer pas comme une faut j'ai pas compris /listpour quoi cette erreur malgré mon code est juste
Commenter la réponse de mkhadi
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
9
0
Merci
et bien justement parce que ton code n est pas juste ;o)

GodConan ;o)
Commenter la réponse de cs_GodConan
Messages postés
58
Date d'inscription
lundi 1 novembre 2010
Statut
Membre
Dernière intervention
4 décembre 2018
0
Merci
merci bcp de ta part bcp bcp tu donne moi grand aide merci
Commenter la réponse de mkhadi
0
Merci
Clique sur "Réponse acceptée" sur le post de GodConan pour clore le sujet maintenant que ton problème est résolu :D


--
Pylouq
(Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)
Commenter la réponse de Utilisateur anonyme
Messages postés
58
Date d'inscription
lundi 1 novembre 2010
Statut
Membre
Dernière intervention
4 décembre 2018
0
Merci
ok
Commenter la réponse de mkhadi