IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Trie_par_tas erreur lorsque appel de fonction


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Par défaut Trie_par_tas erreur lorsque appel de fonction
    Bonjour
    je fais un projet sur le trie par tas, mais lorsque j'appel mes fonctions j'ai cette erreur:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsExeption: 11
    at projet.construire_tas(projet.java:59)
    at projet.main(projet.java:31)
    je dois dépasser la capacité de mon tableau mais je ne voit pas ou,merci par avance de votre aide.
    mon code est celui-ci:
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    import javax.swing.*;
    public class projet{
     
     
     
     
    	public static void main(String[] args){
     
    		int B[] = {5,7,9,24,0,8,8,88,76,64};
            int taille=10;
            int largeur=640;
            int longueur=640;
     
        construire_tas(B,10);
        trier_tas(B,10);  
     
     
     
     
     
     
    }
    public static void trier_tas(int A[],int taille){construire_tas(A,taille);
    	                                 for(int i=taille-1;i>=1;i--){
                                                                          swap(A,i,0);}
                                                          entasser(A,0,taille);   }
     
     
    public static  void entasser(int A[],int i,int n){int c=0;
    	                                   if(gauche(i)>= n-1)return ;
    	                                   c=gauche(i);
    	                                   if (droite(i)<n-1){ if(A[droite(i)]>A[c]){c=droite(i);}
    	                                   	   if(A[i]<A[c]){
    	                                   	   	   swap(A,c,i);
    	                                   	   	   entasser(A,c,n);
    	                                   	   }
    							}}
     
     
     public static void construire_tas(int A[],int n){
    	                                 for(int i=0;i<n;i++){
    	                                 	 if((A[i]<A[gauche(i)])||(A[i]<A[droite(i)])){  entasser(A,i,n);}
    	                                 }
     
     
    					}
     
     
    public static int pere(int i){
    return ((i-1)/2);
    }
     
    public static int gauche(int i){
    return ((2*i)+1);
    }
     
    public static int droite(int i){
    return ((2*i)+2);
    }
     
     
    public  static void swap(int tab[],int a,int b){int c;
    c=tab[a];
    tab[a]=tab[b];
    tab[b]=c;
    }}

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par facb32 Voir le message
    Bonjour

    je dois dépasser la capacité de mon tableau mais je ne voit pas ou,merci par avance de votre aide.
    A la ligne 59 de ton projet.java, comme l'erreur l'indique.

  3. #3
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Salut,

    Le tableau B contient 10 elements. Dans la fonction construire_tas, tu passes la taille du tableau (10). Puis, dans cette meme fonction, tu parcours le tableau en utilisant les fonctions droite et gauche. Or, ces fonctions renvoient 2*i+1. Donc, quand tu es sur le 5e element, tu accedes deja à un element hors du tableau...

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Par défaut
    Oui je comprends je dois passer par une variable intermédiaire pour ne pas modifier i,car meme avec la comparaison i garde la valeur de la fonction gauche et droite.Merci à vous deux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur d'appel de fonction dans un onglet
    Par SonnyFab dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/11/2010, 13h14
  2. Réponses: 3
    Dernier message: 08/11/2006, 17h56
  3. Erreur de compilation -> appel de fonction
    Par R'SKaP dans le forum C++
    Réponses: 2
    Dernier message: 04/12/2005, 01h33
  4. [FPDF] Erreur après appel d'une fonction avec include
    Par orus8 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 04/11/2005, 10h49
  5. [appel de fonction]Erreur bizarre
    Par DEC dans le forum ASP
    Réponses: 4
    Dernier message: 10/08/2004, 17h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo