Tableau java

Résolu
toufalaye04 Messages postés 12 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

j'ai écrit une fonction qui retourne l'indice du plus petit élément d'un tableau d'entier mais il me signale une erreur au niveau du 'if' que j'arrive pas à trouver voici mon code lors que je l'éxécute

public static int indiceMIN (int t[],int imin, int imax)
{
int res = imin;
for ( int i = imin + 1;i <= imax;i++)
if (t[i]< t[res]) res=i;
return res;
}
merci d'avance.

2 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Au hasard, l'erreur ne serait pas une ArrayOutOfBoundsException ?
    La confiance n'exclut pas le contrôle
    1
    1. toufalaye04 Messages postés 12 Statut Membre
       
      si si c ça mais je comprends pas ça signifie quoi
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      Dans le lien que j'ai mis l'exception est clairement expliquée : "L'indice est strictement négatif ou supérieur ou égal à la taille du tableau".
      D'ailleurs l'exception doit te donner la valeur de l'indice qui a planté.

      Il faudrait voir quelles sont les valeurs de t.length, imin, et imax, pour mieux comprendre. La confiance n'exclut pas le contrôle
      0
    3. toufalaye04 Messages postés 12 Statut Membre
       
      dans mon cas l'éxéption donne la taille du tableau
      0
    4. KX Messages postés 19031 Statut Modérateur 3 020
       
      Donc c'est que tu utilises i=t.length, or les indices doivent être compris entre 0 et t.length-1...
      0
    5. vordano Messages postés 1981 Statut Membre 316
       
      rhaaa marre de me planter à chaque fois parce que je lis que la moitié de la question -_-
      je retourne réfléchir au problème ^^'
      0
  2. danimo
     
    Salut,

    Un truc tout simple:
    trier le tableau à l'aide de la méthode sort de la classe Arrays (import java.util.Arrays;):

    int[] leTableau = {14, 2, 11, 8, 4, 150, 6, 150, 1, 2, 4, 3, 5, 7, 2, 1, 18};
    
            Arrays.sort(leTableau); //Tri du tableau en ordre croissant
            System.out.println("mini = " + leTableau[0]);
            System.out.println("maxi = " + leTableau[leTableau.length -1]);


    Cordialement,

    Dan
    -1
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      En triant le tableau tu perds les indices d'origine des minimum et extremum puisque tu vas déplacer les valeurs donc c'est pas judicieux (sans parler de la complexité en O(n.log n) au lieu de O(n))...
      0
    2. danimo
       
      Tes extremum remarques désobligeantes sont extremumement pénibles.
      C'est la dernière fois que je m'abaisse à te répondre :
      -si tu as besoin de conserver l'ordre initial, clône le tableau et trie ce clône !!!...
      0
    3. KX Messages postés 19031 Statut Modérateur 3 020
       
      Il n'y a pas de raison que j'arrête de critiquer les réponses qui ne sont pas correctes (la solution que tu proposes ne réponds pas au problème). Je me permet ce genre de critique lorsque je les pense constructive, mais ne crois pas que ce soit contre toi, je l'ai également fait avec Vordano dans cette discussion (même s'il a préféré effacer ses messages depuis) et avec d'autres ailleurs.
      Si tu les prends comme des griefs personnels alors fais ta mauvaise tête si tu veux, mais je suis sûr que notre "vie" sur le forum serait plus saine si tu comprenais que tu peux tirer profit de mes remarques, de même que je tire profit des remarques qui me sont faites par ci par là dans le forum...
      0