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

Collection et Stream Java Discussion :

Afficher un Damier en tableau 2D


Sujet :

Collection et Stream Java

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiante de Mr Zoom
    Inscrit en
    Octobre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiante de Mr Zoom
    Secteur : Services de proximité

    Informations forums :
    Inscription : Octobre 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Afficher un Damier en tableau 2D
    Allo,
    Je souhaite afficher un damier dans un tableau 2D.
    Toutefois, je ne comprends pas trop comment le faire.

    Voici la partie du code en question:
    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
    20
    21
    22
    23
    24
    25
     
    case 'D':
    				{
    					// Initialiser les valeurs dans le tableau
    					for (int i = 0; i < tab.length; i++)
    					{
    						for (int j = 0; j < tab[0].length; j++)
    						{
    								tab[i][j] = '*';
    						}
    						i++;
    					}
     
    					// Affichage du résultat
    					for (int i = 0; i < tab.length; i++)
    					{
    						for (int j = 0; j < tab[0].length; j++)
    						{
    							System.out.print (tab[i][j] + "  ");
    						}
     
    						System.out.println ();
    					}
    					break;
    				}
    Donc ce code affiche bien un tableau avec des étoiles partout (a chaque emplacement du tableau)

    toutefois, les étoiles doivent apparaîtrent dans cet ordre:


    Comment faire ?
    Merci!!!

  2. #2
    Candidat au Club
    Femme Profil pro
    Étudiante de Mr Zoom
    Inscrit en
    Octobre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiante de Mr Zoom
    Secteur : Services de proximité

    Informations forums :
    Inscription : Octobre 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Mise à jour du code après quelques manipulations:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    case 'D':
    				{
    					// Initialiser les valeurs dans le tableau
    					for (int i = 0; i < tab.length; i = i+3)
    					{
    						for (int j = 0; j < tab[0].length; j = j+3)
    						{
    							tab[i][j] = '*';
    							j++;
    							for ( j = 0; j < tab[0].length; j++)
    							{
    								tab[i][j] = '*';
     
    							}
     
    						}
    						i++;
    						for (int j = 0; j < tab[0].length; j++)
    						{
    							tab[i][j] = '*';
     
    						}
     
    					}
     
    					// Affichage du résultat
    					for (int i = 0; i < tab.length; i++)
    					{
    						for (int j = 0; j < tab[0].length; j++)
    						{
    							System.out.print (tab[i][j] + "  ");
    						}
     
    						System.out.println ();
    					}
    					break;
    				}
    Voici le résultat obtenu:


    Comme toujours, Merci d'avance.

    Karyna

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiante de Mr Zoom
    Inscrit en
    Octobre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiante de Mr Zoom
    Secteur : Services de proximité

    Informations forums :
    Inscription : Octobre 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Mise à jour du code:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    case 'D':
    				{
    					// Initialiser les valeurs dans le tableau
    					for (int i = 0; i < tab.length; i = i+3)
    					{
    						for (int j = 0; j < tab[0].length; j = j+3)
    						{
    							tab[i][j] = '*';
    							j++;
    							tab[i][j] = '*';
     
    						}
    						i++;
    						for (int j = 0; j < tab[0].length; j = j+3)
    						{
    							tab[i][j] = '*';
    							j++;
    							tab[i][j] = '*';
     
    						}
     
    					}
     
    					// Affichage du résultat
    					for (int i = 0; i < tab.length; i++)
    					{
    						for (int j = 0; j < tab[0].length; j++)
    						{
    							System.out.print (tab[i][j] + "  ");
    						}
     
    						System.out.println ();
    					}
    					break;
    				}
    Résultat:

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Tu testes le numéro des lignes s'il est pair ou impair pour commencer la coloration d'une case par noire ou blanche. Ensuite tu inverses les couleurs des colonnes successifs jusqu'au dernier colonne de la ligne.

    A+.

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiante de Mr Zoom
    Inscrit en
    Octobre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiante de Mr Zoom
    Secteur : Services de proximité

    Informations forums :
    Inscription : Octobre 2012
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    On ne peut malheureusement pas utiliser pair impair car il s'agit d'un bloque de 4 étoiles, mais après quelques temps de travail je suis parvenu a un bout de code qui est capable de générer un damier, mais seulement dont les dimensions sont pair,

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    case 'D':
    				{
    					// Initialiser les valeurs dans le tableau
    					for (int i = 0; i < tab.length; i = i+3)
    					{
    						for (int j = 0; j < tab[0].length; j = j+3)
    						{
    							tab[i][j] = '*';
    							if (j <= (dimension)-1)
    							{
    							j++;
    							tab[i][j] = '*';
    							}
     
    						}
    						i++;
    						for (int j = 0; j < tab[0].length; j = j+3)
    						{
    							tab[i][j] = ' ';
    							if (j <= (dimension)-1)
    							{
    							j++;
    							tab[i][j] = ' ';
    							}
     
    						}
     
    					}
    					for (int i = 2 ; i < tab.length; i = i+3)
    					{
    						for (int j = 2; j < tab[0].length; j = j+3)
    						{
    							tab[i][j] = '*';
    							if (j <= (dimension)-1)
    							{
    							j++;
    							tab[i][j] = '*';
    							}
    						}
    						i++;
    						for (int j = 2; j < tab[0].length; j = j+3)
    						{
    							tab[i][j] = '*';
    							if (j <= (dimension)-1)
    							{
    							j++;
    							tab[i][j] = '*';
    							}
     
    						}
     
    					}
     
    					// Affichage du résultat
    					for (int i = 0; i < tab.length; i++)
    					{
    						for (int j = 0; j < tab[0].length; j++)
    						{
    							System.out.print (tab[i][j] + "  ");
    						}
     
    						System.out.println ();
    					}
    					break;
    				}
    Est ce que quelqu’un aurait une idée pour qu'il puisse afficher un tableau de dimension impair comme dans le premier exemple? Cette aide serait très apprécié!!!

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Je me semble d'âme charitable

    Au hasard, ceci ne marcherait pas ? (ton code me semble excessivement long pour si peu). Evidement j'ai couplé l'affichage avec le reste...

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    public static void main(String[] args)
    		{
    			int Nbr_X = 2; // Nombre de case en X.
    			int Nbr_Y = 7; // Nombre case en Y
    			int dimX = 3; // "Longueur" de case en X (affiche plusieur fois la meme lettre).
    			int dimY = 3; // "Largeur" de case en Y. (même chose).
     
    			int cptM = 0; // Un simple compteur qui va servir a savoir ou l'on est dans la construction, l'index de la case courante. (qui pourrait même être évité, puisque cptM = j*Nbr_X+i).
     
    			// Premiere boucle sur les "lignes"
    			for (int i = 0; i < Nbr_X; i++)
    			{
    				// Retenir l'index de la case courante
    				int oldCPTM = cptM;
    				String tmp = "";
    				// 2 Eme boucle sur les "colonnes".
    				for (int j = 0; j < Nbr_Y; j++)
    				{
    					// Un variable qui va retenir quelle caractere on va "afficher".
    					String c = "I";
    					// Une petite operation basique pour retourne 0 ou 1 pour choisir une case sur 2 de l'autre "caractère".
    					if (cptM++%2==0) c="O";
    					// Simple boucle pour construire l'"affichage" en colonnes (pour afficher plusieur fois le meme caractère)
    					for (int kj = 0; kj < dimX; kj++)
    						tmp+=c;
    				}
    				// Meme chose que precedement mais pour afficher la ligne.
    				for (int j = 0; j < dimY; j++)
    					System.err.println(tmp);
     
    				// Revenir a l'index de la case courante (on a augmenter cptM dans la boucle des Nbr_Y).
    				cptM = oldCPTM+1;
    			}
    		}
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Bonjour Wax,
    J'ai le même problème que Karyna.
    Malheureusement, ton code ne fonctionne pas pour les nombre de lignes/colonnes impaires (Tel que dans l'exemple présenté sur la photo dans le premier post de cette discussion).

    Saurais-tu comment remédier à cela ?
    Amicalement.

  8. #8
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Tu parles du fait que les cases en bas et a droite soient tronquées ? (ce qui me parait étrange d'ailleurs pour un damier, ca fait un damier de 3 case 1/2*3 case 1/2)
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    oui si le nombre de lignes/colonnes est impaire il doit y avoit un demi carré d'étoile.

  10. #10
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Bah il faut rajouter une petite condition parait.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Ou exactement ?
    Merci beaucoup

  12. #12
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    As tu seulement compris mon code ?

    Cela ne devrait pas être un problème, sauf si tu ne l'as pas compris. Je vais rajouter un peu de commentaires dans le post précedent. (en fait ou est l'auteur originale de la question posée ? )
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Bonsoir,
    En effet j'ai de la difficulté a comprendre ton code puisque l'on doit stocker les données dans un tableau.
    Du genre: tab[i][j] = '*'
    Et les afficher avec le tableau. genre system.out.print(tab[i][j] + " ");
    Alors que tu sembles stocker les * dans une variable c.

    De plus, je ne vois pas ou mettre une condition impaire dans le code.

    Merci davance
    Stephanie.

  14. #14
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Je ne donne qu'une des solutions parce que sinon ca serait un peu trop facile qui règle le problème du tableau.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    public static void main(String[] args)
    	{
    		int Nbr_X = 5; // Nombre de case en X.
    		int Nbr_Y = 6; // Nombre case en Y
    		int dimX = 3; // "Longueur" de case en X (affiche plusieur fois la meme lettre).
    		int dimY = 3; // "Largeur" de case en Y. (même chose).
     
    		int cptM = 0; // Un simple compteur qui va servir a savoir ou l'on est dans la construction, l'index de la case courante. (qui pourrait même être évité, puisque cptM = j*Nbr_X+i).
     
    		char Tableau[][] = new char[Nbr_Y*dimX][Nbr_X*dimX];
     
    		// Premiere boucle sur les "lignes"
    		for (int i = 0; i < Nbr_X; i++)
    		{
    			// Retenir l'index de la case courante
    			int oldCPTM = cptM;
    			String tmp = "";
    			// 2 Eme boucle sur les "colonnes".
    			for (int j = 0; j < Nbr_Y; j++)
    			{
    				// Un variable qui va retenir quelle caractere on va "afficher".
    				char c = 'I';
    				// Une petite operation basique pour retourne 0 ou 1 pour choisir une case sur 2 de l'autre "caractère".
    				if (cptM++%2==0) c='O';
    				// Simple boucle pour construire l'"affichage" en colonnes (pour afficher plusieur fois le meme caractère)
    				for (int kj = 0; kj < dimX; kj++)
    					Tableau[j][i]=c;
    			}
     
    			// Revenir a l'index de la case courante (on a augmenter cptM dans la boucle des Nbr_Y).
    			cptM = oldCPTM+1;
    		}
     
    		affiche(Tableau);
    	}
     
    	private static void affiche(char[][] tableau) {
     
    		for (int i = 0; i < tableau.length; i++) {
    			for (int j = 0; j < tableau[i].length; j++) {
    				System.err.print(""+tableau[i][j]);
    			}
    			System.err.println();
    		}
     
    	}
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [Tableaux] Afficher id d'un tableau array
    Par Pepito2030 dans le forum Langage
    Réponses: 7
    Dernier message: 01/06/2007, 20h27
  2. [MySQL] Afficher champs vides dans tableau
    Par rasmulti dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 23/02/2007, 01h19
  3. Réponses: 4
    Dernier message: 28/01/2007, 22h39
  4. [debutant]Afficher un damier
    Par mikedavem dans le forum 2D
    Réponses: 2
    Dernier message: 08/05/2006, 15h39
  5. [VBA-E]Afficher tout dans un tableau dynamique croisé
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/03/2006, 13h09

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