> Tous les forums > Forum Autres langages
 Fonction qui renvoie un tableau
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
rere1012
  Posté le 15/02/2009 @ 14:17 
Aller en bas de la page 
Petit astucien

Bonjour,

Je suis débutant en java.

Je suis en train de créer un programme qui fait des opérations sur les matrices carrées. (affichage, somme, produit ...)

Je veux créer une fonction qui renvoie un tableau comportant le minimum de chaque ligne de la matrice.

voici ce que j'ai fais :

public int[] minLignes() {
int[] REP = new int[this.TAB.length];
for (int i = 0; i < this.TAB.length; i++)
for (int j = 0; j < this.TAB.length; j++)
if(this.TAB[i][j]> this.TAB[i+1][j+1])
REP[i]=TAB[i][j];
return REP;
}

Ce n'est peut etre pas bon, mais ce n'est pas ce qui m'interesse...

Ce que je veux savoir, c'est comment afficher dans le programme principal, la réponse à cette fonction ?

MatriceCarree M = new MatriceCarree(3);

M.saisie();

M.affichage(); // jusque là tout va bien !

M.minLignes(); // ???

Merci de m'aider !

Le programme :


import java.util.Scanner;

public class MatriceCarree {
private int[][] TAB;

public MatriceCarree() {
this(3);
}

public MatriceCarree(int N) {
this.TAB = new int[N][N];
}

public void saisie() {
Scanner sc = new Scanner(System.in);
System.out.println("Début de la saisie");
for (int i = 0; i < this.TAB.length; i++)
for (int j = 0; j < this.TAB.length; j++) {
System.out.println("Entrez un entier pour la case de ligne "
+ (i + 1) + " et de colonne " + (j + 1));
TAB[i][j] = sc.nextInt();
}
}

public void affichage() {
int compt = 0;
System.out.println("");
for (int i = 0; i < this.TAB.length; i++)
for (int j = 0; j < this.TAB.length; j++) {
compt++;
System.out.print(TAB[i][j] + " ");
if (compt % this.TAB.length == 0)
System.out.println("");
}
}

public MatriceCarree transposee() {
MatriceCarree Rep = new MatriceCarree();
for (int i = 0; i < this.TAB.length; i++)
for (int j = 0; j < this.TAB.length; j++)
Rep.TAB[i][j] = TAB[j][i];
return Rep;
}

public MatriceCarree somme(MatriceCarree C) {
MatriceCarree REP = new MatriceCarree();
for (int i = 0; i < this.TAB.length; i++)
for (int j = 0; j < this.TAB.length; j++)
REP.TAB[i][j] = C.TAB[i][j] + this.TAB[i][j];
return REP;
}

public MatriceCarree produit(MatriceCarree C) {
MatriceCarree REP = new MatriceCarree();

for (int i = 0; i < this.TAB.length; i++)
for (int j = 0; j < this.TAB.length; j++)
for (int k = 0; k < this.TAB.length; k++)
REP.TAB[i][j] = (C.TAB[i][k] * this.TAB[k][j])
+ REP.TAB[i][j];
return REP;
}

public boolean estSymetrique() {
for (int i = 0; i < this.TAB.length; i++)
for (int j = 0; j < this.TAB.length; j++)
if (this.TAB[i][j] != this.TAB[j][i])
return false;
return true;
}

public int[] minLignes() {
int[] REP = new int[this.TAB.length];
for (int i = 0; i < this.TAB.length; i++)
for (int j = 0; j < this.TAB.length; j++)
if(this.TAB[i][j]> this.TAB[i+1][j+1])
REP[i]=TAB[i][j];
return REP;
}


public void affichagetableau(int[] tab) {
for (int i = 0; i < tab.length; i++)
System.out.println(tab[i]);

}
}

Publicité
don diego
 Posté le 15/02/2009 à 17:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Salut,

Ta fonction minLignes() te renvoie un tableau d'entier. Il faut donc que tu le récupères quanq tu appelles cette fonction :
int[] resultat = M.minLignes();

Je pense que pour l'affichage des valeurs du tableau resultat, tu sauras le faire car tu as déjà fait quelque chose de similaire dans ton programme.

rere1012
 Posté le 15/02/2009 à 17:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour et merci de m'aider.

J'ai bien ajouté ceci :

int[] resultat = M.minLignes();

pour stocker le tableau résultat.

MatriceCarree M = new MatriceCarree(3);

M.saisie();

M.affichage();

int[] resultat = M.minLignes();

for (int i=0;i<3;i++)

System.out.println(resultat[i]);

Mais ceci me renvoit une erreur :

...

Entrez un entier pour la case de ligne 3 et de colonne 1

2

Entrez un entier pour la case de ligne 3 et de colonne 2

2

Entrez un entier pour la case de ligne 3 et de colonne 3

2

2 2 2

2 2 2

2 2 2

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3

at MatriceCarree.minLignes(MatriceCarree.java:76)

at TestMatrice.main(TestMatrice.java:27)

Encore uen fois, Merci de m'aider

rere1012
 Posté le 15/02/2009 à 19:05 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir,

ça y est , il n'y a plus d'erreur, c'est juste ma fonction qui doit renvoyer le plus petit nombre de chaque ligne de la matrice qui est fausse...

Si quelqu'un a une idée!

Merci

public int[] minLignes() {

int[] REP = new int[this.TAB.length];

for (int i = 0; i < this.TAB.length; i++)

for (int j = 0; j < this.TAB.length; j++)

if (this.TAB[i][j] == this.TAB[i][j]) // Ici c'est faux ...

REP[i] = TAB[i][j];

return REP;

}

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
35,99 €Souris sans fil Logitech G305 à 35,99 €
Valable jusqu'au 28 Février

Amazon fait une belle promotion sur la nouvelle souris sans fil Logitech G G305 qui passe à 35,99 € livrée gratuitement alors qu'on la trouve ailleurs autour de 50 €. Cette souris vous offre des performances sans fil de niveau professionnel et une fiabilité inégalée surpassant même certaines des meilleures souris gaming filaire. Dotée du capteur HERO, vous allez connaitre une précision exceptionnelle grâce à sa sensibilité pouvant aller jusqu'à 12 000 dpi.


> Voir l'offre
89,99 €Disque dur externe portable Seagate Expansion 4 To USB 3.0 à 89,99 €
Valable jusqu'au 26 Février

Amazon fait une promotion sur le disque dur externe portable Seagate Expansion d'une capacité de 4 To à 89,99 € livré gratuitement alors qu'on le trouve ailleurs à partir de 120 €. Ce disque dur externe portable au format 2,5 pouces dispose d'une interface USB 3.0 compatible USB 2.0. Une excellente affaire pour ce disque dur qui offre des débits de 115 Mo/s. Il n'est pas soudé et est donc démontable si vous souhaitez le réutiliser ailleurs (console, NAS, PC).


> Voir l'offre
32,99 €Imprimante multifonction HP DeskJet 2620 + Instant Ink 6 mois à 32,99 €
Valable jusqu'au 25 Février

Cdiscount propose actuellement l'imprimante multifonction HP DeskJet  2620 à 32,99 €. Cette imprimante 3 en 1 fait donc imprimante, photocopieur et scanner. Elle dispose d'un chargeur automatique de documents. Elle fonctionne avec 2 cartouches d'encre (une noire et une 3 couleurs). Avec l'imprimante, vous pouvez également bénéficier de 6 mois d'abonnement gratuit au service HP Instant Ink où vos cartouches sont automatiquement commandées par votre imprimante.  Afin de bénéficier du service vous devrez sélectionner un forfait parmi les quatre forfaits existants (15, 50, 100, 300 pages) en fonction de votre prévision de consommation. HP vous enverra ainsi gratuitement assez d'encre pour imprimer jusqu'à 300 pages / mois pendant 6 mois. Vous pouvez bien sûr résilier ce forfait à la fin des 6 mois (ou bien passer au forfait gratuit qui offre 15 pages / mois). Notez que ce service n'est pas obligatoire et que si vous ne souhaitez pas y souscrire, vous pouvez acheter vous même vos cartouches.


> Voir l'offre

Sujets relatifs
fonction pointeur et, tableau dynamique
Comment exclure 0 dans une fonction
Rafraichir un tableau en java
commande créer la fonction effacer image en VB10
extraction de valeurs sur un tableau a deux entrees
symétrie d'un tableau 2D
Tableau dans java
fonction en vb 6
Fonction Indirect avec VBA
aide pour une fonction
Plus de sujets relatifs à Fonction qui renvoie un tableau
 > Tous les forums > Forum Autres langages