Probleme dans programme tableau

Résolu
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 - 27 oct. 2005 à 19:17
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 - 27 oct. 2005 à 22:56
Bonjour tout le monde,
J'ai un problème dans mon programme. Ca doit être certainement l'algo qui foire et je ne trouve pas. Mon problème, c'est que je voudrais insérer une valeur dans mon tableau et ça plante à chaque fois. J'ai aussi une erreur dans mon constructeur. Est ce que quelqu'un pourrait m'aider?
Merci d'avance.
import java.io.*;

class Integers {


private static int tab[];
private static int sizetab;
private static int nbrElem;


public static int lineInt(){
int m =0; // variable résultat
int n=0;
String c = null;
try{
InputStreamReader lecteur = new InputStreamReader(System.in);
BufferedReader entree=new BufferedReader(lecteur);
c = entree.readLine();
n = Integer.parseInt(c);
}
catch(IOException e) {}
return n;}


/*public Integers(int size_tab) { //constructeur
return tab.length; //renvoi taille tableau
}
*/
public static int cardinal(int nbrElem) { //renvoi le nombre d'elements
return nbrElem;
}


public static boolean appartient(int val,int tab[],int sizetab) {
int i=1;
while(tab[i]!=val && i<sizetab-1) {
i=i+1;
}
if(tab[i]==val) {return true;}
else {return false;}
}


public static void inserer(int insertval){
int i=1;
while(tab[i]!=insertval && i<sizetab-1) {
i=i+1;
}
if(tab[i]==insertval) {System.out.println("existe");}
else {
int h=tab.length+1;
tab =new int[h];
tab[h+1]=insertval;}}


public static void main(String args[]) {
int n =0;
int searchval=0;
int valtoinsert=0;
int taille = 5;


System.out.println("Taille du tableau:");
n = lineInt();
tab = new int[n];
//System.out.println("la taille du tableau est:"+Entiers(n));
System.out.println("Acquisition des valeurs ordonnées sans repetition:");
for(int j=0;j<=taille-1;j++) {
tab[j]=lineInt();
}
System.out.println("le tableau contient:"+" "+cardinal(n)+" "+"elements");
System.out.println("Recherche d'une valeur:");
searchval=lineInt();
System.out.println("La valeur:"+searchval+"="+appartient(searchval,tab,n));
System.out.println("Valeur a inserer:");
valtoinsert=lineInt();
inserer(valtoinsert);


for(int j=0;j<=n-1;j++){
System.out.println(tab[j]);
}
}}

Jarod_Delaware

2 réponses

cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
27 oct. 2005 à 20:16
Je suis pas du tout sur d'avoir compris le problème mais quand tu écris:

int h=tab.length+1;


tab =new int[h];

dans inserer tu définis un nouveau tableau qui écrase l'ancien et après tu redéfini que la dernière en faisant:

tab[h+1]=insertval;

Il faudrait redéfinir toute les autres valeurs du tableau avant.

Sinon utilise un veteur ça sera peut être plus simple.

Voilà j'espère que c'était ça le problème et que ça pourra t'aider.
3
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 2
27 oct. 2005 à 22:56
Merci pour ta réponse. Je vais travailler dans le sens que tu me propose.

Jarod_Delaware
0
Rejoignez-nous