Exercice du java à verifier

azerty0123 -  
tarek_dotzero Messages postés 834 Statut Membre -
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?

2 réponses

  1. tarek_dotzero Messages postés 834 Statut Membre 122
     
    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
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      "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
  2. azerty0123
     
    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
    1. tarek_dotzero Messages postés 834 Statut Membre 122
       
      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
    2. azerty0123
       
      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
    3. tarek_dotzero Messages postés 834 Statut Membre 122
       
      Beh oui, vous avez besoin d'un seul entier, pas de tampon, pas de variables provisoire.
      Le maximum vous suffit.
      0