Problème tableau

Fermé
ivesso Messages postés 98 Date d'inscription samedi 1 novembre 2008 Statut Membre Dernière intervention 5 juillet 2011 - 29 déc. 2008 à 01:09
ivesso Messages postés 98 Date d'inscription samedi 1 novembre 2008 Statut Membre Dernière intervention 5 juillet 2011 - 29 déc. 2008 à 14:49
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] + " ");                
              }
         }    }

4 réponses

mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
29 déc. 2008 à 03:18
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
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
ivesso Messages postés 98 Date d'inscription samedi 1 novembre 2008 Statut Membre Dernière intervention 5 juillet 2011
29 déc. 2008 à 02:27
c'est en JAVA
0
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
ivesso Messages postés 98 Date d'inscription samedi 1 novembre 2008 Statut Membre Dernière intervention 5 juillet 2011
29 déc. 2008 à 14:49
merci pour le code sa ma bcp aider
0
rwikus Messages postés 871 Date d'inscription lundi 29 décembre 2008 Statut Membre Dernière intervention 18 mai 2012 56
29 déc. 2008 à 03:12
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