Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

Algorithme pour fonction ¨clonage¨ et äfficher¨

Posté par
janou789
13-07-11 à 14:33

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

Posté par
Bachstelze
re : Algorithme pour fonction ¨clonage¨ et äfficher¨ 14-07-11 à 20:48

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 :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1730 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !