Problème tableau

ivesso Messages postés 108 Statut Membre -  
ivesso Messages postés 108 Statut Membre -
Bonjour,
jai un souci avec un programme qui me demande ce qui suit:

-soit le tableau qui possede les valeurs:1,2,3,4,5,6 :decaler dune case adroite chaque element du tableau
(afficher sa :6,1,2,3,4,5)
-afiicher toutes les perutations circulaires du tableau.
MON CODE EST:
public class tab1
  {
    public static void main(String[] args){
      int [] tab = {1, 2, 3, 4, 5,6};
	  System.out.println("les valeurs du tableau initial sont :");
               for(int i = 0; i < tab.length; i++)
               {
                    
                   System.out.print(tab[i] + " ");                
              }
              // Maintenant, inversons l ordre des valeurs. La boucle suivant le permet
              for( int i = 0; i < 2; i++)
              {
                   int tempo = tab[i];
                   tab[i] = tab[5 - i];
                   tab[5 - i] = tempo;
              }
              System.out.println();
              System.out.println("les valeurs du tableau final sont :");
              for(int i = 0; i < tab.length; i++)
              {
                   System.out.print(tab[i] + " ");                
              }
         }    }
Configuration: Windows Vista
Internet Explorer 7.0

4 réponses

  1. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    en effet l'algo n'est pas bon
    essaye ça
    int tempo = tab[tab.length];
    for(i=(tab.length)-1; i>=0 ;i--)
    {
       tab[i+1]=tab[i];
    }
    tab[0]=tempo;
    1
  2. loupius
     
    Peux-tu préciser quel est le language utilisé?
    On a l'impression que c'est du C, mais la fonction 'main' qui est un mot réservé, serait employé bizarrement.
    On a l'impression que c'est du C++ mais il n'y a pas de classe 'String' mais une classe 'string'.
    Je pose la question car je suis curieux et comme je ne connais pas tout, je préfère demander.
    Merci pour la réponse.
    0
    1. ivesso Messages postés 108 Statut Membre
       
      c'est en JAVA
      0
  3. loupius
     
    Bon je ne connais pas la java, mais ça n'a pas d'importance puisque c'est un problème d'algorithme.

    tab = { 1, 2, 3, 4, 5, 6 };
    Je prends la 2ème boucle et je la fait tourner à la main:
    Pour le 1er tour de boucle:
    i = 0;
    tempo = tab{i] = tab[0] = 1;
    tab[i] = tab[0] = tab[5-i] = tab[5] = 6;
    tab[5-i] = tab[5] = tempo = 1;
    donc: tab = { 6, 2, 3, 4, 5, 1 };
    Bilan: on a échangé les colonnes (i) et (5-i) c'est-à-dire 0 et 5.

    Pour le 2ème tour de boucle:
    i = 1;
    donc on échangera les colonnes (i) et (5-i) c'est-à-dire 1 et 4, d'où le résultat:
    tab = { 6, 5, 3, 4, 2, 1 };

    Et il n'y a pas de 3ème tour car i=2 donc la condition i<2 n'est plus satisfaite.
    Et ce n'est pas le résultat escompté... il faut donc revoir l'algorithme.
    0
    1. ivesso Messages postés 108 Statut Membre
       
      merci pour le code sa ma bcp aider
      0
  4. rwikus Messages postés 994 Statut Membre 56
     
    public static void main(String[] args) {

    int mem;
    int tab[]={1,2,3,4,5,6};
    for(int d=0;d<=(tab.length-1);d++){
    mem=tab[tab.length-1];
    tab[tab.length-1]=tab[d];
    tab[d]=mem;
    }
    for(int i=0;i<tab.length;i++){
    System.out.print(tab[i]);
    System.out.print(" ");
    }

    voila cet algo te permetra de decaler et daficher ala fin {6,1,2,3,4,5}
    0