Utilisation de la procédure en java
Résolu
Odenelle
Messages postés
102
Date d'inscription
Statut
Membre
Dernière intervention
-
arth Messages postés 9374 Date d'inscription Statut Contributeur Dernière intervention -
arth Messages postés 9374 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- Utilisation de la procédure en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Eclipse java - Télécharger - Langages
2 réponses
Ce n'est pas une erreur ^^
Ce que tu affiches est bien la valeur de Tab_entier, mais ce que toi tu veux faire c'est afficher les cases du tableau, c'est à dire les Tab_entier[i].
Tu dois donc faire une boucle et afficher une à une les cases du tableau...
Remarque : si ça affiche toujours 1,2,3,4,5,6,7,8,9,10 ce ne sera pas non plus une erreur d'affichage, c'est juste que ta méthode renverser ne marche pas comme tu veux ;-)
Ce que tu affiches est bien la valeur de Tab_entier, mais ce que toi tu veux faire c'est afficher les cases du tableau, c'est à dire les Tab_entier[i].
Tu dois donc faire une boucle et afficher une à une les cases du tableau...
Remarque : si ça affiche toujours 1,2,3,4,5,6,7,8,9,10 ce ne sera pas non plus une erreur d'affichage, c'est juste que ta méthode renverser ne marche pas comme tu veux ;-)
Odenelle
Messages postés
102
Date d'inscription
Statut
Membre
Dernière intervention
20
Merci bien :) , je vais donc faire cette boucle.
Hello,
Au passage si Tab_entier n'est pas commun aux deux fonctions, alors ton tableau n'en sera pas plus inversé.
Au passage si Tab_entier n'est pas commun aux deux fonctions, alors ton tableau n'en sera pas plus inversé.
Et bien j'ai testé son code hier, et étonnamment ça fonctionne !
Je pensais à priori qu'avec le passage par référence, le tableau allait être copié et modifié uniquement à l'intérieur de la fonction et qu'ensuite dans le main on aurait encore le tableau original, mais que nenni, l'inversion se fait très bien...
Je pensais à priori qu'avec le passage par référence, le tableau allait être copié et modifié uniquement à l'intérieur de la fonction et qu'ensuite dans le main on aurait encore le tableau original, mais que nenni, l'inversion se fait très bien...
public static void renverser(int [] T, int taille_T) { int i,tmp; for (i=0; i<=(taille_T)/2; i++) { tmp = T[i]; T[i] = T[taille_T-1-i]; T[taille_T-1-i] = tmp; } } public static void afficher(int[] T) { for (int i : T) System.out.printf("%d ", i); System.out.println(); } public static void main (String...args) { int [] Tab_entier = {1,2,3,4,5,6,7,8,9,10}; afficher(Tab_entier); renverser(Tab_entier,Tab_entier.length); afficher(Tab_entier); }
Oui ce code fonctionne :) , il n'est surement pas le plus simple pour renverser un tableau mais il devenait carrément inutile si on ne sait pas afficher le tableau renversé ! Par contre je n'ai pas crée de nouvelle procédure pour l'affichage j'ai uniquement travaillé dans le programme principal comme ceci :
renverser(Tab_entier,tailletableau);
int i;
System.out.print("Voici votre tableau renversé a l'aide d'une procédure : ");
System.out.print("{ ");
for (i=0; i<tailletableau-1; i++)
{
System.out.print(Tab_entier[i]+", ");
}
i=tailletableau-1;
System.out.print(+Tab_entier[i]+" }");
renverser(Tab_entier,tailletableau);
Avec la procédure renverser postée dans mon message d'avant, et bien sur le tableau et sa taille initialisé auparavant..
renverser(Tab_entier,tailletableau);
int i;
System.out.print("Voici votre tableau renversé a l'aide d'une procédure : ");
System.out.print("{ ");
for (i=0; i<tailletableau-1; i++)
{
System.out.print(Tab_entier[i]+", ");
}
i=tailletableau-1;
System.out.print(+Tab_entier[i]+" }");
renverser(Tab_entier,tailletableau);
Avec la procédure renverser postée dans mon message d'avant, et bien sur le tableau et sa taille initialisé auparavant..
"je n'ai pas crée de nouvelle procédure pour l'affichage" si tu ne fais qu'un seul affichage ça se justifie, moi j'en ai fait deux alors tout de suite je pense à faire une petite méthode, mais ça ne va pas changer grand chose...
"il n'est surement pas le plus simple pour renverser un tableau", je vois difficilement comment faire mieux ! Après on peut toujours chipoter sur l'utilité de taille_T, sur l'intérêt du <= alors que < devrait suffire, ou bien améliorer la gestion des indices de sorte à ne pas calculer taille_T-1-i à deux reprises à chaque fois, mais c'est de l'optimisation, l'algorithme de base reste le même ;-)
"il n'est surement pas le plus simple pour renverser un tableau", je vois difficilement comment faire mieux ! Après on peut toujours chipoter sur l'utilité de taille_T, sur l'intérêt du <= alors que < devrait suffire, ou bien améliorer la gestion des indices de sorte à ne pas calculer taille_T-1-i à deux reprises à chaque fois, mais c'est de l'optimisation, l'algorithme de base reste le même ;-)
public static void renverser(int[] T) { for (int i=0, j=T.length-1, tmp; i<j; i++, j--) { tmp = T[i]; T[i] = T[j]; T[j] = tmp; } }