Vérification d'une procédure

Résolu
mkhadi Messages postés 58 Date d'inscription lundi 1 novembre 2010 Statut Membre Dernière intervention 4 décembre 2018 - 23 juin 2012 à 22:24
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

12 réponses

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
27 juin 2012 à 01:37
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)
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
24 juin 2012 à 09:40
Salut,

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

 for ( i = 0; i < X.length-1; i++) {
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
25 juin 2012 à 06:51
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)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
25 juin 2012 à 08:48
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];
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mkhadi Messages postés 58 Date d'inscription lundi 1 novembre 2010 Statut Membre Dernière intervention 4 décembre 2018
26 juin 2012 à 01:42
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
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
26 juin 2012 à 07:10
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)
0
Utilisateur anonyme
26 juin 2012 à 12:25
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.)
0
mkhadi Messages postés 58 Date d'inscription lundi 1 novembre 2010 Statut Membre Dernière intervention 4 décembre 2018
26 juin 2012 à 23:35
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
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
27 juin 2012 à 01:18
et bien justement parce que ton code n est pas juste ;o)

GodConan ;o)
0
mkhadi Messages postés 58 Date d'inscription lundi 1 novembre 2010 Statut Membre Dernière intervention 4 décembre 2018
27 juin 2012 à 02:27
merci bcp de ta part bcp bcp tu donne moi grand aide merci
0
Utilisateur anonyme
28 juin 2012 à 15:41
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.)
0
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
ok
0
Rejoignez-nous