themessenger
Messages postés45Date d'inscriptionvendredi 26 octobre 2007StatutMembreDernière intervention 5 janvier 2009
-
5 déc. 2007 à 22:11
themessenger
Messages postés45Date d'inscriptionvendredi 26 octobre 2007StatutMembreDernière intervention 5 janvier 2009
-
6 déc. 2007 à 17:15
the messenger
bonjour je vous informe que j'ai résolu mon probléme.Mais il se trouve que je doit ecrire une fonction qui fait la somme de deux tableaux à deux dimensions .et voila ce que j'ai fait merci de me doner des conseils
cordialement
/**fonction ajouter qui prend en argument deux matrices
et renvoie un tableau a deux dimensions*/
public static int[][] ajouter (int [][] t1,int [][] t2) {
int [][] sommeTab;
int i;
int j;
for (i = 0;i < sommeTab.length;i ++) {
for (j = 0;j < sommeTab[0].length;j ++) {
sommeTab[i][j] = t1[i][j] + t2[i][j];
}
}
themessenger
Messages postés45Date d'inscriptionvendredi 26 octobre 2007StatutMembreDernière intervention 5 janvier 2009 5 déc. 2007 à 22:16
the messenger
voila le programme...merci
/** le main */
public static void main(String[] args) {
/*declaration des varriables et des tableaux*/
int[][] tab1;
int[][] tab2;
int nbLignesTab1;
int nbColonnesTab1;
int nbLignesTab2;
int nbColonnesTab2;
int i;
int j;
int i1;
int j1;
/*on demandes a l'utilusateur de saisir le nombre de lignes
et le nombre de colonnes du tableau tab1*/
nbLignesTab1 = Console.readInt("\nSaisir le nombre de lignes du tableau tab1:");
nbColonnesTab1 = Console.readInt("\nSaisir le nombre de colonnes du tableau tab1 :");
/*on demandes a l'utilusateur de saisir le nombre de lignes
et le nombre de colonnes du tableau tab2*/
nbLignesTab2 = Console.readInt("\nSaisir le nombre de lignes du tableau tab2 :");
nbColonnesTab2 = Console.readInt("\nSaisir le nombre de colonnes du tableau tab2:");
/*initialisation du tableau tab1*/
tab1 = new int [nbLignesTab1][nbColonnesTab1];
/*initialisation du tableau tab2*/
tab2 = new int [nbLignesTab2][nbColonnesTab2];
/*saisit des valeurs du tableau tab1*/
for (i = 0;i < tab1.length;i ++) {
for (j = 0;j < tab1[0].length;j ++) {
tab1[i][j] = Console.readInt("\nSaisir la valeur de la ligne " + i + " et de la colonne " + j + " du tableau tab1");
//System.out.println("tab1["+i+"]["+j+"] = " +tab1[i][j]);
}
}
/*appel de la procedure afficheTableau2D*/
/*saisit des valeurs du tableau tab2*/
for (i1 = 0;i1 < tab2.length;i1 ++) {
for (j1 = 0;j1 < tab2[0].length;j1 ++) {
tab2[i1][j1] = Console.readInt("\nSaisir la valeur de la ligne " + i1 + " et de la colonne " + j1 + " du tableau tab2");
}
}
/*appel de la procedure afficheTableaux2D*/
afficherTableaux2D(tab2);
afficherTableaux2D(tab1);
tab1[i][j] + tab2[i1][j1]=ajouter(tab1,tab2);
}// fin du main
/**procedure afficherTAbleaux2D qui prend en argument un tableau
à deux dimensions et l'affiche sous forme de matrice*/
public static void afficherTableaux2D(int[][] t) {
/*declaration des variables*/
int i;//variable de boucle pour parcourir les lignes du tableau
int j;//variable de boucle pour pacourir les colonnes du tableau
for (i = 0;i < t.length;i ++) {
for (j = 0;j < t[0].length;j ++) {
System.out.print("\n\t"+t[i][j] + " ");
}
}
}//fin de la procedure
/**fonction ajouter qui prend en argument deux matrices
et renvoie un tableau a deux dimensions*/
public static int[][] ajouter (int [][] t1,int [][] t2) {
int [][] sommeTab;
int i;
int j;
for (i = 0;i < sommeTab.length;i ++) {
for (j = 0;j < sommeTab[0].length;j ++) {
sommeTab[i][j] = t1[i][j] + t2[i][j];
}
}
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 6 déc. 2007 à 09:49
Salut,
1 - Tu ne retiens pas les explications qui te sont données... donc pourquoi poser des questions ?
2 - Merci de ne pas créer un nouveau thread pour répondre à une question que tu à posé sur un autre...
sinon j'y plus loin en plus de la correction de [auteur/GOUESSEJ/684669.aspx gouessej]:
<strike>for (j = 0;j < tab1[0].length;j ++) {</strike>[faux]
enfin, pourquoi tu créer les incréments de tes boucles en globale à ton main ??? tu n'est pas en C ici tu sais... tu peux aisément limiter la portée des la variables à ta boucle...
for ( int i = 0;i < tab1.length;i ++)
for (int j = 0;j < tab1[i].length;j ++)
sinon au pire si tu preferes utiliser une variable globale à la fonction pourquoi ne pas utiliser la même ?
int i, j;
[...]
for (i = 0;i < tab1.length;i ++)
for (j = 0;j < tab1[i].length;j ++)
[...]
for (i = 0;i < tab2.length;i ++)
for (j = 0;j < tab2[i].length;j ++)
[...]
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
themessenger
Messages postés45Date d'inscriptionvendredi 26 octobre 2007StatutMembreDernière intervention 5 janvier 2009 6 déc. 2007 à 15:53
merci pour tout,vous savez quand on est debutant c'est dure et moi je suis arriver avec un mois et demi de retard dans mon iut ...
j'ai suivi vos conseils et ca marche voici le programme encore merci...
class TestMatrices {
/** le main */
public static void main(String[] args) {
/*declaration des varriables et des tableaux*/
int[][] tab1;
int[][] tab2;
int nbLignesTab1;
int nbColonnesTab1;
int nbLignesTab2;
int nbColonnesTab2;
int i;
int j;
int i1;
int j1;
int[][] somme;
/*on demandes a l'utilusateur de saisir le nombre de lignes
et le nombre de colonnes du tableau tab1*/
nbLignesTab1 = Console.readInt("\nSaisir le nombre de lignes du tableau tab1:");
nbColonnesTab1 = Console.readInt("\nSaisir le nombre de colonnes du tableau tab1 :");
/*on demandes a l'utilusateur de saisir le nombre de lignes
et le nombre de colonnes du tableau tab2*/
nbLignesTab2 = Console.readInt("\nSaisir le nombre de lignes du tableau tab2 :");
nbColonnesTab2 = Console.readInt("\nSaisir le nombre de colonnes du tableau tab2:");
/*initialisation du tableau tab1*/
tab1 = new int [nbLignesTab1][nbColonnesTab1];
/*initialisation du tableau tab2*/
tab2 = new int [nbLignesTab2][nbColonnesTab2];
/*saisit des valeurs du tableau tab1*/
for (i = 0;i < tab1.length;i ++) {
for (j = 0;j < tab1[i].length;j ++) {
tab1[i][j] = Console.readInt("\nSaisir la valeur de la ligne " + i + " et de la colonne " + j + " du tableau tab1");
//System.out.println("tab1["+i+"]["+j+"] = " +tab1[i][j]);
}
}
/*appel de la procedure afficheTableau2D*/
/*saisit des valeurs du tableau tab2*/
for (i1 = 0;i1 < tab2.length;i1 ++) {
for (j1 = 0;j1 < tab2[i1].length;j1 ++) {
tab2[i1][j1] = Console.readInt("\nSaisir la valeur de la ligne " + i1 + " et de la colonne " + j1 + " du tableau tab2");
}
}
/*appel de la procedure afficheTableaux2D*/
afficherTableaux2D(tab2);
afficherTableaux2D(tab1);
somme = ajouter(tab1,tab2);
}// fin du main
/**procedure afficherTAbleaux2D qui prend en argument un tableau
à deux dimensions et l'affiche sous forme de matrice*/
public static void afficherTableaux2D(int[][] t) {
/*declaration des variables*/
int i;//variable de boucle pour parcourir les lignes du tableau
int j;//variable de boucle pour pacourir les colonnes du tableau
for (i = 0;i < t.length;i ++) {
for (j = 0;j < t[i].length;j ++) {
System.out.print("\t "+ t[i][j]);
}
System.out.println();
}
}//fin de la procedure
/**fonction ajouter qui prend en argument deux matrices
et renvoie un tableau a deux dimensions*/
public static int[][] ajouter (int [][] t1,int [][] t2) {
int [][] sommeTab = new int [t1.length][t1[0].length] ;
int i;
int j;
for (i = 0;i < sommeTab.length;i ++) {
for (j = 0;j < sommeTab[i].length;j ++) {
sommeTab[i][j] = t1[i][j] + t2[i][j];
}
}
return sommeTab;
}//fin fonction
}
"tout ce que je sais c'est que je sais rien " socrate
Vous n’avez pas trouvé la réponse que vous recherchez ?
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 6 déc. 2007 à 16:34
Salut,
dernière petite correction (je l'avait pas vu t'aleur ^^)
dans
la méthode ajouter la création de ton tableau (sommeTab) me choque, tu
peux avoir t1[0].length = 10 et t1[1].length = 8 de plus tu n'est pas
certaint que t1 et t2 aient le même nombre de lignes...
bref je te propose cette solution :
public static int[][] ajouter(int[][] t1, int[][] t2) {
//ici on se borne sur celui qui a le moins de lignes pour éviter
l'exeption, et on renseigne plus tard le nombre d'elements de la 2eme
dimention
int[][] sommeTab = new int[(t1.length < t2.length) ? t1.length : t2.length][];
for (int i = 0; i < sommeTab.length; i++) {
//ici on se borne sur celui qui a le moins de lignes pour éviter l'exeption et on céer la 2eme dimention
sommeTab[i] = new int[(t1[i].length < t2[i].length) ? t1[i].length : t2[i].length];
for (int j = 0; j < sommeTab[i].length; j++)
sommeTab[i][j] = t1[i][j] + t2[i][j];
}
return sommeTab;
}
bref ce n'est qu'une idée ^^
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."