Java
Résolu/Fermé
walamefteh
Messages postés
35
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
14 septembre 2009
-
2 avril 2008 à 21:25
walamefteh Messages postés 35 Date d'inscription lundi 10 mars 2008 Statut Membre Dernière intervention 14 septembre 2009 - 4 avril 2008 à 15:26
walamefteh Messages postés 35 Date d'inscription lundi 10 mars 2008 Statut Membre Dernière intervention 14 septembre 2009 - 4 avril 2008 à 15:26
A voir également:
- Java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Eclipse java - Télécharger - Langages
- Java runtime environment - Télécharger - Langages
3 réponses
tuxinet
Messages postés
82
Date d'inscription
mardi 1 avril 2008
Statut
Membre
Dernière intervention
8 juin 2009
2 avril 2008 à 22:46
2 avril 2008 à 22:46
Voilà ce qui cloche :
change ta méthode main dans la classe test comme suit (c'est juste pour faire un test) :
public static void main(String[] args) {
{
int dim=8;
int increment=2;
int elem=5;
ESBasique T=new ESBasique( dim,increment);
T.inserer(elem);
T.inserer(elem);
System.out.print(T.ToString());
System.out.println();
System.out.println(elem);
}
}
Si tu exécute ton code ça donnera ça :
50
5
********************************************
Maintenant change ta méthode toString comme suit (c'est également juste pour faire un test) :
public String ToString ()
{
int i;
String s="";
for(i=0;i<nbelem;i++)
s=s+tab[i];
System.out.println(nbelem);
return s;
}
Si tu exécute ton code ça donnera ça :
2
50
5
********************************************
Si tu veux, la valeur de nbelem que tu utilise dans ta méthode toString est égale à valeure que tu lui a donné dans ton constructeur, c'est-à-dire 2 (la boucle for va être parcourue une seule fois). Elle ne changera pas, même si tu essaies de lui donner une autre valeur dans ta méthode main en faisant appel au constructeur.
Essaie de coder en utiliser les merveilleux Getters and Setters. Ajoute dans ta classe TrieSimple ça :
public void setElemValue(int n) {
nbelem = n ;
}
Maintenant modifie ta méthode main de la classe test comme ca :
public static void main(String[] args) {
{
int dim=8;
int increment=2;
int elem=5;
ESBasique T=new ESBasique( dim,increment);
T.inserer(elem);
T.inserer(elem);
T.setElemValue(elem) ;
System.out.print(T.ToString());
}
}
Tu verras donc apparaître le résultat suivant lors de l'exécution :
50000
Pour ce qui est de ton tri je n'ai pas contrôler la chose mais j'espère que tu as compris le principe.
change ta méthode main dans la classe test comme suit (c'est juste pour faire un test) :
public static void main(String[] args) {
{
int dim=8;
int increment=2;
int elem=5;
ESBasique T=new ESBasique( dim,increment);
T.inserer(elem);
T.inserer(elem);
System.out.print(T.ToString());
System.out.println();
System.out.println(elem);
}
}
Si tu exécute ton code ça donnera ça :
50
5
********************************************
Maintenant change ta méthode toString comme suit (c'est également juste pour faire un test) :
public String ToString ()
{
int i;
String s="";
for(i=0;i<nbelem;i++)
s=s+tab[i];
System.out.println(nbelem);
return s;
}
Si tu exécute ton code ça donnera ça :
2
50
5
********************************************
Si tu veux, la valeur de nbelem que tu utilise dans ta méthode toString est égale à valeure que tu lui a donné dans ton constructeur, c'est-à-dire 2 (la boucle for va être parcourue une seule fois). Elle ne changera pas, même si tu essaies de lui donner une autre valeur dans ta méthode main en faisant appel au constructeur.
Essaie de coder en utiliser les merveilleux Getters and Setters. Ajoute dans ta classe TrieSimple ça :
public void setElemValue(int n) {
nbelem = n ;
}
Maintenant modifie ta méthode main de la classe test comme ca :
public static void main(String[] args) {
{
int dim=8;
int increment=2;
int elem=5;
ESBasique T=new ESBasique( dim,increment);
T.inserer(elem);
T.inserer(elem);
T.setElemValue(elem) ;
System.out.print(T.ToString());
}
}
Tu verras donc apparaître le résultat suivant lors de l'exécution :
50000
Pour ce qui est de ton tri je n'ai pas contrôler la chose mais j'espère que tu as compris le principe.
walamefteh
Messages postés
35
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
14 septembre 2009
3 avril 2008 à 00:06
3 avril 2008 à 00:06
svp je veux savoir est ce que la methode d'insertion d'un element est juste ou non sachant que nbelem est le nombre d'elements dans le tableau
et dim est la capacité de tableau
et elem est l'element à inserer
void inserer(int elem)
{
int i=0;int a;int j=nbelem-1;
if (nbelem==0)
tab[0]=elem;
else if (nbelem<dim)
while(i<nbelem)
{
if (tab[i]>elem)
{
while(j>=i)
{
tab[j+1]=tab[j];
j--;
}
tab[i]=elem;
}
else i++;
}
else if (nbelem==dim)
{
i=0;
dim=dim+increment;
int tab1[];
tab1=new int[dim];
tab1=tab;
i=0;j=nbelem-1;
while(i<nbelem)
{
if (tab1[i]>elem)
{
while(j>=i)
{
tab1[j+1]=tab1[j];
j--;
}
tab1[i]=elem;
}
else i++;
}
tab=tab1;
}
nbelem=nbelem+1;
}
et dim est la capacité de tableau
et elem est l'element à inserer
void inserer(int elem)
{
int i=0;int a;int j=nbelem-1;
if (nbelem==0)
tab[0]=elem;
else if (nbelem<dim)
while(i<nbelem)
{
if (tab[i]>elem)
{
while(j>=i)
{
tab[j+1]=tab[j];
j--;
}
tab[i]=elem;
}
else i++;
}
else if (nbelem==dim)
{
i=0;
dim=dim+increment;
int tab1[];
tab1=new int[dim];
tab1=tab;
i=0;j=nbelem-1;
while(i<nbelem)
{
if (tab1[i]>elem)
{
while(j>=i)
{
tab1[j+1]=tab1[j];
j--;
}
tab1[i]=elem;
}
else i++;
}
tab=tab1;
}
nbelem=nbelem+1;
}
tuxinet
Messages postés
82
Date d'inscription
mardi 1 avril 2008
Statut
Membre
Dernière intervention
8 juin 2009
4 avril 2008 à 11:31
4 avril 2008 à 11:31
salut,
à mon avis, tu te compliques un peu la vie avec ta méthode insérer, car pour ajouter des valeurs dans un tableau, rien de plus simple que d'utiliser une boucle for. Je te conseille de faire ça de la manière suivante :
Tu crée une classe avec ton constructeur (avec le tableau) comme suit :
public class SortArray {
private int [] tab ;
// Constructor
public SortArray() {
super();
tab = new int[10]; ; // construit un tableau de longueur 10
}
// User methods
public int [] createArray() { // rempli le tableau aléatoirement (Math.random)
for (int i = 0; i < tab.length; i++) {
tab[i] = (int) (Math.random() * 100);
}
return tab ;
}
public int [] sortArray(int [] tab) { // tri le tableau
int iMin; // indiceMinimum : position du tableau où se trouve la valeure minimale
int min; // Minimum : valeure minimale
for (int i = 0; i < tab.length; i++) {
min = tab[i];
iMin = i;
for (int j = i + 1; j < tab.length; j++) { // i + 1 parce qu'on souhaite tester la prochaine valeure du tableau
if (tab[j] < min) {
min = tab[j];
iMin = j;
}
}
valueExchange(tab, i, iMin); // appel à la méthode valueExchange()
}
return tab ;
}
public void valueExchange(int [] tab, int i, int iMin) { // échange de deux valeures
int temp;
temp = tab[i];
tab[i] = tab[iMin];
tab[iMin] = temp;
}
public void showMessge(int [] tab) { // affiche le tableau
for (int i = 0; i < tab.length; i++) {
System.out.print(tab[i] + " ");
}
}
}
**********************************************************************
Et maintenant la classe Test (contenant le main) :
/**
*
*/
/**
* @author Tuxinet
*
*/
public class SortArrayTest {
/**
* @param args
*/
public static void main(String[] args) {
SortArray application = new SortArray();
System.out.println("Cette classe va trier les valeures d'un tableau rempli aléatoirement (de 0 à 100) par ordre croissant.");
int [] tab = application.createArray();
System.out.print("Avant le tri : ");
application.showMessge(tab);
System.out.println();
System.out.print("Après le tri : ");
application.showMessge(application.sortArray(tab));
}
}
**********************************************************************
J'éspère que tu as compris la chose. Sinon, n'hésite pas.
à mon avis, tu te compliques un peu la vie avec ta méthode insérer, car pour ajouter des valeurs dans un tableau, rien de plus simple que d'utiliser une boucle for. Je te conseille de faire ça de la manière suivante :
Tu crée une classe avec ton constructeur (avec le tableau) comme suit :
public class SortArray {
private int [] tab ;
// Constructor
public SortArray() {
super();
tab = new int[10]; ; // construit un tableau de longueur 10
}
// User methods
public int [] createArray() { // rempli le tableau aléatoirement (Math.random)
for (int i = 0; i < tab.length; i++) {
tab[i] = (int) (Math.random() * 100);
}
return tab ;
}
public int [] sortArray(int [] tab) { // tri le tableau
int iMin; // indiceMinimum : position du tableau où se trouve la valeure minimale
int min; // Minimum : valeure minimale
for (int i = 0; i < tab.length; i++) {
min = tab[i];
iMin = i;
for (int j = i + 1; j < tab.length; j++) { // i + 1 parce qu'on souhaite tester la prochaine valeure du tableau
if (tab[j] < min) {
min = tab[j];
iMin = j;
}
}
valueExchange(tab, i, iMin); // appel à la méthode valueExchange()
}
return tab ;
}
public void valueExchange(int [] tab, int i, int iMin) { // échange de deux valeures
int temp;
temp = tab[i];
tab[i] = tab[iMin];
tab[iMin] = temp;
}
public void showMessge(int [] tab) { // affiche le tableau
for (int i = 0; i < tab.length; i++) {
System.out.print(tab[i] + " ");
}
}
}
**********************************************************************
Et maintenant la classe Test (contenant le main) :
/**
*
*/
/**
* @author Tuxinet
*
*/
public class SortArrayTest {
/**
* @param args
*/
public static void main(String[] args) {
SortArray application = new SortArray();
System.out.println("Cette classe va trier les valeures d'un tableau rempli aléatoirement (de 0 à 100) par ordre croissant.");
int [] tab = application.createArray();
System.out.print("Avant le tri : ");
application.showMessge(tab);
System.out.println();
System.out.print("Après le tri : ");
application.showMessge(application.sortArray(tab));
}
}
**********************************************************************
J'éspère que tu as compris la chose. Sinon, n'hésite pas.
walamefteh
Messages postés
35
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
14 septembre 2009
4 avril 2008 à 15:26
4 avril 2008 à 15:26
merci bien vraiment vous m'encouragez plus à travailler
dieu avec vous
dieu avec vous
2 avril 2008 à 23:56