Utilisation de la procédure en java
Résolu/Fermé
Odenelle
Messages postés
102
Date d'inscription
samedi 19 novembre 2011
Statut
Membre
Dernière intervention
18 mars 2016
-
19 nov. 2011 à 15:26
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 - 21 nov. 2011 à 12:22
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 - 21 nov. 2011 à 12:22
A voir également:
- Utilisation de la procédure en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Notice d'utilisation - Guide
- Utilisation chromecast - Guide
- Java apk - Télécharger - Langages
2 réponses
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
19 nov. 2011 à 16:18
19 nov. 2011 à 16:18
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 ;-)
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 292
20 nov. 2011 à 13:39
20 nov. 2011 à 13:39
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é.
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
20 nov. 2011 à 14:14
20 nov. 2011 à 14:14
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); }
Odenelle
Messages postés
102
Date d'inscription
samedi 19 novembre 2011
Statut
Membre
Dernière intervention
18 mars 2016
20
20 nov. 2011 à 15:32
20 nov. 2011 à 15:32
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..
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
Modifié par KX le 20/11/2011 à 16:11
Modifié par KX le 20/11/2011 à 16:11
"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; } }
Odenelle
Messages postés
102
Date d'inscription
samedi 19 novembre 2011
Statut
Membre
Dernière intervention
18 mars 2016
20
20 nov. 2011 à 16:12
20 nov. 2011 à 16:12
Il est vrai :), merci en tout cas pour ton aide KX
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 292
21 nov. 2011 à 01:47
21 nov. 2011 à 01:47
Etrange, ça ne marche pas avec les autres objets ....
Enfin j'ai tenté de modifier une String par la même méthode, pas possible.
Enfin j'ai tenté de modifier une String par la même méthode, pas possible.
19 nov. 2011 à 18:19