à partir de 7eme élément j'ai pb

Résolu/Fermé
domxaline - Modifié par baladur13 le 1/07/2015 à 13:51
 domxaline - 1 juil. 2015 à 12:18
Bonjour,
après avoir exécuté mon prg et quand l'utilisateur ajoute 7 éléments ou plus;
et quand il supprime un indice,
le 5eme et le 6eme indices ont la même valeurs, pourquoi ça et comment je peux le corriger svp
import java.util.Scanner;
public class Divers4 
{ 
 public static void main(String[] args) 
 {
  int p;
  System.out.print("Entrez le nombre d'élément du tableau :");
  Scanner sc=new Scanner(System.in);
  int n = sc.nextInt();
  int[]tab = new int[n];
  //cette boucle sert saisi des éléments du tableau
  for( int i=0; i<n; i++ )
  {
    System.out.print("Entrez l'élément n°:"+(i+1)+" du tableau:");
    tab[i] = sc.nextInt();
  }
  System.out.print("Entrez la position de l'élément à supprimer:");
  p = sc.nextInt();
  if ( p<1 || p>n ) // vérifier si la position est dans la limites du tableau
  {
     System.out.print("Position hors limites du tableau: ");
  }
  else
  {
     System.out.println("L'élément à supprimer est "+tab[p-1]);
     for ( int i = p-1; i<n; i++ )
     {
        tab[i] = tab[i+1];
        n = n-1; // il y aura un élément en moins
     }
                    //afficher les éléments
     for( int i = 0; i<tab.length-1; i++ )
    {
      System.out.println("l'élément tab["+(i+1)+"]est:"+tab[i]);
    }
             }
     }
}
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
mon prg marche bien jusqu'au 6 éléments

mon output à partir de 7eme éléments
Entrez le nombre d'élément du tableau :7
Entrez l'élément n°:1 du tableau:5
Entrez l'élément n°:2 du tableau:3
Entrez l'élément n°:3 du tableau:7
Entrez l'élément n°:4 du tableau:9
Entrez l'élément n°:5 du tableau:8
Entrez l'élément n°:6 du tableau:2
Entrez l'élément n°:7 du tableau:6
Entrez la position de l'élément à supprimer:3
L'élément à supprimer est 7
l'élément tab[1]est:5
l'élément tab[2]est:3
l'élément tab[3]est:9
l'élément tab[4]est:8
l'élément tab[5]est:2
l'élément tab[6]est:2

2 réponses

Bonjour

     for ( int i = p-1; i<n; i++ )
     {
        tab[i] = tab[i+1];
        n = n-1; // il y aura un élément en moins
     }

Ton n=n-1 (qui d'ailleurs peut s'écrire simplement --n) devrait être à l'extérieur de la boucle et pas à l'intérieur.
Et ton test devrait être i<n-1 car ta dernière recopie devrait être tab[n-2]=tab[n-1] sinon tu débordes du tableau.(si tu mets le n=n-1 après la boucle)
0
merci beaucoup
0