× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > 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
GratuitJeu PC Rocket League gratuit + bon d'achat de 10 €
Valable jusqu'au 23 Octobre

Epic Game Store offre actuellement le jeu PC Rocket League. Rocket League est un jeu hybride mêlant jeu de football d'arcade et carnage à quatre roues dans d'intenses rencontres à la jouabilité intuitive basée sur la physique. De plus, si vous téléchargez le jeu avant le 23 Octobre, Epic vous offre un bon de 10 € valable sur son catalogue pour un achat de plus de 14,99 € avant le 1er Novembre.


> Voir l'offre
18,95 €Carte mémoire microSDXC UHS-I SanDisk A1 Ultra 128 Go à 18,95 €
Valable jusqu'au 28 Septembre

Le vendeur sérieux Base propose sur Amazon la carte mémoire microSDXC UHS-I SanDisk A1 Ultra 128 Go à 18,95 €. Cette carte mémoire offre des vitesses jusqu'à 100 Mo/s et est idéale pour les téléphones, caméras et appareils photo HD. La livraison est gratuite.


> Voir l'offre
14,99 €Hub Aukey USB C 6 en 1 (USB 3.0, HDMI 4K, lecteur SD et MicroSD) à 14,99 €
Valable jusqu'au 30 Septembre

Amazon fait une promotion sur le Hub Aukey USB C 6 en 1 qui passe à 14,99 €. Ce Hub à brancher sur un port USB C vous permettra d'ajouter 3 ports USB 3.0, un lecteur de cartes mémoire SD et MicroSD ainsi qu'un port HDMI 4K à votre ordinateur portable ou votre smartphone.


> 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