Java erreur de code

Boss38400 Messages postés 11 Statut Membre -  
 danimo -
Bonjour,
je dois faire un code de java pour mon td
mais il marche pas quand je compile

je dois pendre un entier dans le cas de mon programme l'entier "a "qui est égale à 7
vérifier si il est pair ou impair
dans le cas pair diviser par 2
dans le cas impair *3+1
jusqu'à que l'entier soit égale à 1
et tous afficher

voila mon programme

{
           double [] monTableau;
           monTableau = new double[20];
           double b,a;
           int i;
           i=0;
           a=7;
          if (a%2 == 0) 
            {
            b=a/2;
            monTableau[i] = 'b';
            }
          else
            {
            b=(a*3)+1;
            monTableau[i] = 'b';
            }
            i++;
  while (b!=1)
   {
     if (b%2 == 0) 
      {
       b=b/2;
       monTableau[i] = 'b';
      }
     else
      {
       b=(b*3)+1;
       monTableau[i] = 'b';
      }
     i++;
      }
     System.out.println(monTableau); }
}
Configuration: Windows XP
Firefox 3.0.3

6 réponses

  1. toto
     
    Bonjour

    mais il marche pas quand je compile
    ça nous aurait aidés que tu recopies le message d'erreur.

    Sinon, as-tu une idée de la différence entre monTableau[i] = 'b'; et monTableau[i] = b; ?
    Surtout, n'essaye pas une modif au hasard pour voir, réfléchis d'abord.
    0
  2. Nixial
     
    BOnjour,

    Tu dois revoir l'algorithme, c'est pas du tout ce que tu souhaites faire, ce que tu as écris là .

    Tu as un entier a.

    Tu fais un controle si pair ou impair, en fonction tu le modifies et tu fais ton print dans la console.

    Ceci doit etre imbriqué dans une boucle while par exemple tant que a != 1.

    Tu n'as pas besoin de b, ni de tableau sauf si tu veux enregistrer l'ensemble des valeurs prises par a.

    Bonne chance.
    0
    1. boy2 Messages postés 17 Statut Membre
       
      tu n'aide vraiment pas, il ya des nuls en programmation
      -1
  3. Bibi38
     
    
    int y=7;
            while ( y != 1 )
       {
            if ( y%2 == 0 )
               y=y/2;
            else
               y=3*y+1;
            System.out.print(y+ " ");
       }
    
        }


    voila le bon code
    pas besoin de passer par un tableau
    0
  4. chuka Messages postés 980 Statut Membre 379
     
    Salut,
    Si ton tableau est rempli de double, pourquoi tu mets des ' ' dans monTableau[i] = 'b'; et pas monTableau[i] = b;
    -1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. danimo
     
    Bonjour,

    Tout d'abord, sauf monTableau[i] = 'b'; qui doit être remplacé par monTableau[i] = b;
    ainsi que la liste résultat System.out.println(montableau);
    qu'il faut par exemple remplacer par:
    for (i = 0;i <20;i++)
    System.out.println(">>>>>> " + (i+1) + " " + monTableau[i]);

    ton programme fait ce que tu souhaites. Il faudrait tout de même y apporter queques améliorations.

    Il fonctionne avec a = 7, mais si par exemple a = 77, la boucle
    while (b!=1)
    {
    .......

    "s'allonge" et plante par dépassement de la capacité du tableau.
    Il faudrait simuler le traitement sans écrire dans monTableau pour calculer la taille du tableau.
    Par exemple:

    double [] monTableau;
    // monTableau = new double[20];
    int a,b;
    int i = 0;
    // i=0;
    a=7;

    // bien sûr sans écrire dans monTableau
    if (a%2 == 0)
    {
    b=a/2;
    }
    else
    {
    b=(a*3)+1;
    }
    while (b!=1)
    {
    if (b%2 == 0)
    {
    b=b/2;
    }
    else
    {
    b=(b*3)+1;
    }
    i++;
    }
    int taille = i + 1;
    monTableau = new double[taille];
    i = 0;
    if (a%2 == 0)
    {
    b=a/2;
    //monTableau[i] = b;
    }
    else
    {
    b=(a*3)+1;
    //monTableau[i] = b;
    }
    monTableau[i] = b;
    i++;
    while (b!=1)
    {
    if (b%2 == 0)
    {
    b=b/2;
    //monTableau[i] = b;
    }
    else
    {
    b=(b*3)+1;
    //monTableau[i] = b;
    }
    monTableau[i] = b;
    i++;
    }
    for (i = 0;i <monTableau.length;i++)
    System.out.println(">>>>>> " + (i+1) + " " + monTableau[i]);

    Voir aussi s'il est nécessaire d'avoir un tableau de doubles (c'est peut-être imposé)

    Quant à l'erreur de compilation (ou d'execution), ce n'est pas dû à cette partie de code.

    Cordialement.

    Dan
    -1
  7. danimo
     
    Salut,

    Bien entendu qu'il n'est pas nécéssaire de passer par un tableau pour faire cette petite liste de résultats.

    Mais pourquoi l'en empêcher si c'est un exercice sur les tableaux?

    Cordialement.

    Dan
    -1