Exercice du java à verifier

Fermé
azerty0123 - 25 déc. 2011 à 21:56
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 - 26 déc. 2011 à 00:06
Bonjour,


Voici deux exercices, j'aimerai savoir si mes reponses sont corrects.

Premier exercice

public class toto{

private int entier;
public Toto() {
this.entier=0;
t h i s . e n t i e r = 0 ;}
public void setToto(int nombre)
{
this.entier=nombre;}

public int getToto()
{
int n=this.entier;
int toto=0;
while (n!=0)
{
toto=toto+1;
n=n/10;
}
return toto;
}

Alors pour n=0, je trouve que toto=1
pour n=11 je trouve toto=2;
pour n=123 je trouve toto=3 ainsi que pour n=423.

Est ce bon?

Dans ce second exercice, ce qui est completé en gras été à completer, j'ai essayé. En esperant que cela soit juste.

public class Main{
public static int chercherMaximum (int [] T)
{
for (int i=0, i<T.length, i++)
{
int maximum=T[0];
int I=0;
if T[i]>maximum
{maximum=tab[i];
I=i;
}
return(I);
}


public static int nombredOccurence(int n, int []T)
{
int occ=0;
for( int i=0, i<T.lenght, i++)
{
if T[i]==n
{
occ==occ+1;
}
return occ
}


public static void main(String [] args) {
int [] tableur={1,4,5,-10,12,4,-6,8,4};

int max=chercherMaximum(tableau);
int nb=nombredOccurence(4,tableau);

System.out.printf("la valeur maximale du tableau est %d\n",max);
System.out.printf("4 apparait %d fois dans le tableau\n",nb);
}
}

Est ce bon?
A voir également:

2 réponses

tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
25 déc. 2011 à 23:38
Bonjour,

Le premier exemple contient une erreure, en faite pour la valeur n = 0, il vous donnera 0 et non pas 1.

Le deuxième programme (trouver le max), l contient aussi une erreur.

Le troisième (nombre d'occurrence) me parait correct.
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
26 déc. 2011 à 00:00
"Le troisième (nombre d'occurrence) me parait correct."
Mouais, moi je vois des erreurs partout !

* Les instructions du for, sont avec des points-virgules
* La taille du tableau s'écrit length
* La condition du if doit être entre parenthèse
* L'opérateur == ne s'utilise pas pour faire des affectations
* Il manque le point virgule final

Cinq erreurs sur cinq lignes, c'est quand même difficile de n'en voir aucune !

int occ=0;

for(int i=0; i<T.length; i++) 
    if (T[i]==n)
        occ=occ+1;

return occ;
0
Pour le premier exo, je comprends mon erreur, comme n=0, on ne verifie pas n!=0 donc toto reste egale à 0.

En revanche, je ne vois pas où peut être mon erreur donc le maximum. Pouvez vous m'en dire plus?
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
25 déc. 2011 à 23:51
Si, vous devez laisser l=i et en suite vous avez deux possibilités:

1. Retourner la valeur maximale du tableau,
2. Retourner l'indice de la valeur maximale du tableau.

L'erreur ne viens pas de là, mais de l'initialisation:

int maximum=T[0];
int I=0;


Ces initialisations doivent être mises en dehors de la boucle, autrement, à chaque fois vous refaites l'initialisation et vous perdez le résultats des itérations précédentes.
0
D'accord, mais en faites ce que je veux c'est bien return(maximum) donc le I ne me sert plus à rien. Je n'ai plus besoin du I ?!
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
26 déc. 2011 à 00:06
Beh oui, vous avez besoin d'un seul entier, pas de tampon, pas de variables provisoire.
Le maximum vous suffit.
0