IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

remplissage tableau java


Sujet :

avec Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Par défaut remplissage tableau java
    Bonjour,

    je débute en java et je fais des exercices de remplissage de tableaux. mais voila je bloque sur mon dernier remplissage qui consiste à commencé par la dernière colonne voici mon code pour l'instant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	public static void remplirMatriceHorizontaleV2(int[][] paramTableau){
    		int cpt=1;
    		for(int i=paramTableau.length-1 ;i<=0;++i ){
    			for(int j=0;j<paramTableau.length;++j){
    				paramTableau[i][j]=cpt;
    				cpt++;
    			}
    		}
    	}
    merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Le dernier remplissage en partant de la dernière colonne ? tu parles du "j" ?
    Tu n'utilises pas la valeur de la variable "i".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void remplirMatriceHorizontaleV2(int[][] paramTableau){
    	int cpt=1;
    	for(int i=0 ;i<paramTableau.length;i++ ){
    		for(int j=paramTableau[i].length;j>=0;j--){
    			paramTableau[i][j]=cpt;
    			cpt++;
    		}
    	}
    }

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Citation Envoyé par Izzy94 Voir le message
    mais voila je bloque sur mon dernier remplissage qui consiste à commencé par la dernière colonne voici mon code pour l'instant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		for(int i=paramTableau.length-1 ;i<=0;++i ){
    i commence à une valeur qui est la dernière position dans le tableau (*). Puis on demande de l'incrémenter tant qu'elle est inférieure ou égale à zéro, ce qui ne peut arriver que si le tableau fait une taille de 0 ou 1 élément (sinon i est supérieur à 0, on n'entre pas dans le for). Il faut décrémenter i tant qu'il est supérieur ou égal à zéro !

    (*attention à gérer spécifiquement aussi le cas ou le tableau est vide, puisque i commencera à la valeur -1, et donc fera une erreur lors de paramTableau[-1][j] : en changeant correctement la condition de boucle, ce cas disparaîtra, puisque, rappel, la condition d'entrée dans un for est testée dès qu'on y entre)

    Citation Envoyé par retwas Voir le message
    Le dernier remplissage en partant de la dernière colonne ? tu parles du "j" ?
    Tu n'utilises pas la valeur de la variable "i".
    bah si :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	public static void remplirMatriceHorizontaleV2(int[][] paramTableau){
    		int cpt=1;
    		for(int i=paramTableau.length-1 ;i<=0;++i ){
    			for(int j=0;j<paramTableau.length;++j){
    				paramTableau[i][j]=cpt;
    				cpt++;
    			}
    		}
    	}
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Par défaut
    oui je parle du "j"
    je n'arrive pas à comprendre comment démarrer le remplissage de ma matrice en partant de J à la dernière colonne. j'ai essayé ce code mais je suis toujours en dehors de mon tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	public static void remplirMatriceHorizontaleV2(int[][] paramTableau){
    		int cpt=1;
    		for(int i=paramTableau.length-1 ;i>0;++i ){
    			for(int j=0;j<paramTableau.length;++j){
    				paramTableau[i][j]=cpt;
    				cpt++;
    			}
    		}
    	}
     
    }

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	public static void remplirMatriceHorizontaleV2(int[][] paramTableau){
    		int cpt=1;
    		for(int i=paramTableau.length-1 ;i>0;++i ){
    			for(int j=0;j<paramTableau.length;++j){
    				paramTableau[i][j]=cpt;
    				cpt++;
    			}
    		}
    	}
     
    }
    presque ! j'ai dit qu'il fallait décrémenter i (pour qu'il aille de paramTable.length-1 à 0... et i>=0

    Citation Envoyé par Izzy94 Voir le message
    oui je parle du "j"
    je n'arrive pas à comprendre comment démarrer le remplissage de ma matrice en partant de J à la dernière colonne. j'ai essayé ce code mais je suis toujours en dehors de mon tableau
    Pour j, c'est exactement pareil, sauf qu'il faut prendre la bonne taille de tableau (donc paramTableau[i].length) sinon ça plantera si le tableau n'est pas "carré" : donc for(int j=paramTableau[i].length-1; j>=0; j--)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Par défaut
    j'ai réussi un affichage de mon tableau mais ce n'est pas celui que je désirai, ce code rempli ma matrice de manière horizontale de gauche à droite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    		public static void remplirMatriceHorizontaleV2(int[][] paramTableau){
    			int cpt=1;
    			for(int i=paramTableau.length-1 ;i>=0;--i ){
    				for(int j=0;j<paramTableau.length;++j){
    					paramTableau[i][j]=cpt;
    					cpt++;
     
    					System.out.print(paramTableau[i][j] + "- \t");
    				}
    				System.out.println(" ");
    			}		
    		}
    celui que je tente de réaliser c'est plutôt dans ce style là*:
    3 2 1
    6 5 4
    9 8 7
    *: je m'excuse de ne pas avoir été plus clair concernant mon problème, je me rends compte que j'exprime mal ce que je désire...

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Donc tu veux juste inverser les colonnes, donc selon j et pas selon i : dans ce cas, tu fais un for(int i=0; i<paramTableau.length; i++) tout simplement (et tu inverses l'ordre juste sur j).

    Accessoirement, tu peux faire aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static void remplirMatriceHorizontaleV2(int[][] paramTableau){
    		int cpt=1;
    		for(int[] ligne : paramTableau ){
    			for(int j=ligne.length-1; j>=0;j--){
    				ligne[j]=cpt;
    				cpt++;
    			}
    		}
    Une autre solution pour ce genre de remplissage est d'utiliser les fonctions de conversion de repaires (une dimension vers 2 dimensions et inversement) :

    si ncol est le nombre de colonnes, x un index de colonne et y un index de ligne
    1. y = i/ncol
    2. x = i%ncol

    et
    1. i = y*ncol+x


    i est une position sur un axe (0 à nombre d'éléments n), et x et y les coordonnées correspondantes dans un tableau à 2 dimensions, donc le nombre d'éléments est le même, le nombre de colonnes est connu (ncol) et le nombre de lignes est donc nombre d'éléments divisé par ncol.
    i, x et y vont de 0 à n-1, n étant le max pour chacun (x va donc de 0 à ncol-1, y de 0 à nlig-1).
    Pour inverser x, (qu'il aille de ncol-1 à 0), il suffit de le retrancher : ncol-x. Et pour avoir un offset qui dépend de la ligne, il suffit de l'ajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    int nlig = 3;
    		int ncol = 3;
     
    		int tab[][] = new int[nlig][ncol];
     
    		int nelem = nlig*ncol;
    		for(int i=0; i<nelem; i++) {
     
    			int y = i/ncol;
    			int x = i%ncol;
     
                            int offset = y*ncol; // la valeur dans la cellule pour un début de ligne
    			int val = offset + ncol - x; 
     
    			tab[y][x] = val;
     
    		}
     
    		Arrays.stream(tab).map(Arrays::toString).forEach(System.out::println);
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Par défaut
    merci je comprends mieux le fonctionnement maintenant. je vais m'y remettre

    merci de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. remplissage tableau excel
    Par zayn dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/07/2006, 21h40
  2. [Tableaux] Remplissage tableau associatif
    Par Seth77 dans le forum Langage
    Réponses: 4
    Dernier message: 28/06/2006, 11h07
  3. [VBA-E]Remplissage tableau aléatoire
    Par bernard38 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 08/06/2006, 11h34
  4. Réponses: 2
    Dernier message: 21/12/2005, 17h33
  5. [vbexcel]Pb remplissage tableau
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/09/2005, 13h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo