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 : ");
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.
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 ...
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) ;
}
}
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 : ");
}