Aide pour tableau en Java, urgent

Bonjour,

Il faut que je fasse en Java un tableau d’une taille donnée et il faut que je fasse un algorithme qui me trouve la valeur max des valeurs que j’ai rentré.

Par exemple, dans un tableau à 4 empacements, je tape 1 puis 4 puis 3 puis 2, et à la fin, il me dit que 4 est la valeur max ( les nombres négatifs sont pris en compte ).

Il faut que je fasse ça en Java et je galère trop !!!

J’utilise Visual Café

Toute aide sera grandement appréciée .

Voici mon début d’algo : ( certains symboles ne sont pas affichés )

import java.io.*;
public class test
{
public static void main(String arg[])throws IOException

{

int taille=Entree.lireInt("veuillez saisir la taille du tableau s.v.p. : ");

int [] tab=new int [taille];

int ind=0;

int x =0 ;

while (ind<taille)
{
tab[ind]=Entree.lireInt("Veuillez saisir une valeur s.v.p : ");

ind++;

}
Edité le 20/10/2009 à 19:40

Je ne veux pas être méchant mais si tu galères à ce niveau, tu as de l’inquiétude à te faire.

Et pour te répondre, tu as pensé à utiliser un booléen pour indiquer si une valeur avait été rentrée, puis un autre entier stockant le maximum à chaque nouvelle entrée ? (le booléen ne servant qu’à la première initialisation).

Au passage : new int[taille] = erreur si taille < 0.


public class CMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int tab[] = { 1, 4, 3, 2 };
		int max = 0;
		
		for (int i = 0; i < tab.length; i++) {
			int tmp = tab[i];
			if (tmp > max)
				max = tmp;	
		}
		
		System.out.println("Max = " + max);
		
	}

}

Algo le plus simple, il y a surement plus efficace.

Voici mon algo qui a avancé un peu :



import java.io.*;
public class test
{
    public static void main(String arg[])throws IOException
    
    {
        
        
        
       
        
int taille=Entree.lireInt("veuillez saisir la taille du tableau s.v.p. : ");


int [] tab=new int [taille];

int ind=0;

int x =0 ;

while (ind<taille)
{
 tab[ind]=Entree.lireInt("Veuillez saisir une valeur s.v.p : ");
 
 ind++;
    

}    

while ( tab [ind-1]>ind )

{   
    
    
    
}

    System.out.println("Le nombre maximum est :+x " ) ;
    
    
    
   

    
}



        
        
        
        
        
           
        
        
           
}



Edité le 20/10/2009 à 20:52


Pourquoi de l'inquiétude ? C'est juste un exo d'entrainement ...

ma méthode est de mettre le premier élément du tableau en ‘max’ puis d’itérer le tableau en mettant à jour le ‘max’ si nécessaire.

En fait, il faut vraiment que mon algo soit de ma forme,

Il me manque la formule après le dernier while.

Je n’arrive pas à comprendre pourquoi tu colles 36 000 sauts de ligne superlu.

L’algorithme de base est celui là, tout simplement (les algo cités plus haut sont plus ou moins bons, parce qu’au début le max n’est pas initialisé correctement, donc si tu ne rentre que des valeurs négatives, tu auras toujours 0 comme max !).

int max = 0;
for (int i = 0; i  < tab.length; ++i) {
  if (i == 0 || tab[i] > max) max = tab[i];
}
System.out.println("Max = " + max);

Fin de l’histoire.

Et le faire avec des while ou autre…

Par contre, dans ton code, oui tu prend le mauvais chemin. Etant donné que tu lis les valeurs depuis l’entrée standard une par une, pourquoi faire une boucle après pour faire le max ? ça n’a pas de sens dans ton cas.

C’est bon, j’ai trouvé et ça marche, dites moi ce que vous en pensez …



import java.io.*;
public class test
{
    public static void main(String arg[])throws IOException
    
    {
        
        
        
       
        
int taille=Entree.lireInt("veuillez saisir la taille du tableau s.v.p. : ");


int [] tab=new int [taille];

int ind=0;

int max = tab[ind] ;


while (ind<taille)
{
 tab[ind]=Entree.lireInt("Veuillez saisir une valeur s.v.p : ");
 
 ind++;
    

} 

ind = 0 ;

while ( ind<taille )

{   
    if ( max< tab [ind] )
    
    {
        max = tab[ind] ;
    }
    
   ind++ ;
    
    
}

    System.out.println("Le nombre maximum est :" +max) ;  
    
   
   

    
}     
        
      
        
        
           
        
        
           
}   

Que c’est faux. max n’est pas initialisée au bon endroit. Pour t’en convaincre, rentre une taille de 1, puis tape -999

Dans ton code, t’as oublié “Merci”. De plus, jte trouve gonflé de dire que tu as trouvé alors qu’il y en a un qui t’as pondu la solution.
Edité le 22/10/2009 à 09:10

Tu as de l’idée mais c’est pas vraiment ça car tu as de gros problème de gestion des variables et des erreurs (et un minimum d’indentation te fera pas de mal) :

[quote=“awerty999”]



import java.io.*;
public class test
{
    public static void main(String arg[])throws IOException
    
    {    
                         int taille=Entree.lireInt("veuillez saisir la taille du tableau s.v.p. : ");
                         int [] tab=new int [taille];

[/quote=“awerty999”]
Deja si taille est negatif patatra ton programme plante sec je te conseil


                int taille;
                do
                {
                       taille = Entree.lireInt("veuillez saisir la taille du tableau s.v.p. : ");
                }while(taille <1);
                int [] tab=new int [taille];

Ensuite tu rempli ton tableau

[quote=“awerty999”]


int ind=0;

int max = tab[ind] ;


while (ind<taille)
{
 tab[ind]=Entree.lireInt("Veuillez saisir une valeur s.v.p : ");
 
 ind++;
} 

[/quote=“awerty999”]
Pense que tu as un nombre de boucle fini pour commencé donc pas de while mais un for et surtout tu n’as pas encore de valeur dans le tableau alors la ligne
int max = tab[ind] ;
Devrai provoquer une erreur sur null, la seul raison que cela ne provoque pas d’erreur est la prise de mémoire à la declaration du tableau ( différence entre Java et C#)

donc tu devrai avoir



          for(int ind = 0; ind<taille;ind++)
          {
                   //en prenant en compte que lireInt ne lis que les entiers
                   tab[ind]=Entree.lireInt("Veuillez saisir une valeur s.v.p : ");
          }

et pour finir la verification du MAX

Désolé, quand je dis que “j’ai trouvé”, je prenais bien sûr en compte votre aide. Je m’excuse si je n’ai pas été assez reconnaissant.