Problème tableau
ivesso
Messages postés
108
Statut
Membre
-
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:
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
-
en effet l'algo n'est pas bon
essaye çaint tempo = tab[tab.length]; for(i=(tab.length)-1; i>=0 ;i--) { tab[i+1]=tab[i]; } tab[0]=tempo; -
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. -
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. -
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}