Bonjour à tous!
Voici...
1)
Je dois écrire une fonction appelée ¨clonage¨qui permet de cloner un tableau d'entiers à deux dimensions. Cette fonction prend comme argument un tableau à deux dimensions et retourne un autre tableau d'entiers à deux dimensions. Et je dois soumettre l'algorithme de cette fonction.
2)
Je dois écrire une fonction appelée ¨afficher¨qui prend comme paramètre un tableau à deux dimensions et qui affiche tous ses éléments. Et je dois soumettre l'algorithme de cette fonction.
Voici ce que j'ai fais:
1)
public int[][] clonage(int[][] tab) {
// economie en factorisant le calcule des dimensions
int dim1 = tab.length;
int dim2 =tab[0].length;
int j; // évite de faire des déclaration de variable à tous les passage dans la première boucle
int[][] temp=new int[dim1][dim2];
for(int i=0;i<dim1;i++) {
for( j=0;j<dim2;j++) {
temp[i][j]=tab[i][j];
}
}
return temp;
}
2)
public void afficher (int[][] tab) {
// economie en factorisant le calcule des dimensions
int dim1 = tab.length;
int dim2 =tab[0].length;
StringBuffer sb = new StringBuffer(); /* Stringbuffer peut grandir en mémoire contrairement à String, qui recréé un nouvel objet en mémoire à chaque modification */
int j; // évite de faire des déclaration de variable à tous les passage dans la première boucle
int[][] temp=new int[dim1][dim2];
for(int i=0;i<dim1;i++) {
for( j=0;j<dim2;j++) {
sb.append(tab[i][j]+" ") // incrémente la valeur actuelle de sb
}
sb.append("\n") // ajoute le caractère saut de ligne.
}
System.out.println(sb.toString()); /* on n'affiche les résultats qu'à la fin donc on fait qu'un appel au système */
}
Pouvez-vous me dire si je suis sur la bonne voie et m'aider pour les algorithmes
Merci
Bonsoir
Ça fonctionne, mais quelques remarques :
D'abord la plus importante : dans ta fonction afficher, tu déclares temp alors que tu ne t'en sers pas, ça utilise de la mémoire inutilement.
Ensuite je pense pas qu'il soit nécessaire de déclarer j hors de sa boucle. Ça m'étonnerait que ça fasse une différence significative de performance, le compilateur optimisera ça comme il faut de toute façon.
Enfin, pas besoin d'utiliser un StringBuffer, tu peux faire
for (int i=0; i<dim1; i++) {
for (int j=0; j<dim2; j++) {
System.out.print(t[i][j] + " ");
}
System.out.println("");
}
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :