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

Java Discussion :

Figure en java


Sujet :

Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    octobre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : octobre 2019
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Figure en java
    Bonjour,
    Je voudrais réaliser un carré rempli de "1" mais avec des "0" en forme de triangle rectangle à chaque sommet. J'ai implémenté un tableau tab[i][j] de taille 3*n (hauteur de ma figure) avec un n fixé, mais je n'arrive pas à implémenter ces triangles de "0". Je joins une image pour aider à la compréhension du problème. En particulier je n'arrive pas implémenter un triangle qui formerait un angle droit au sommet en haut à droite de mon carré.

    J'ai voulu gérer ce problème avec une boucle for :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int i = 0; i < n; ++i){
    for(int j = 2*n; j < 3*n; ++j){
    tab[i][j] = 0; 
    }}
    Mais cela ne marche pas, je ne comprends pas quelle serait la condition pour pouvoir afficher seulement un triangle.
    Sauriez-vous me dire comment faire ?
    Merci d'avance

    Nom : Figure.png
Affichages : 79
Taille : 66,3 Ko

  2. #2
    Membre actif Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    décembre 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2008
    Messages : 537
    Points : 264
    Points
    264
    Par défaut
    Bonjour,

    Je ne lis ton post que maintenant, je ne sais pas si tu as pu résoudre ton exercice, mais je t'apporte ma solution qui n'est certes pas "optimisée" mais qui solutionne ton problème.

    Code Java : 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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    import static java.lang.System.out;
     
    public class Application {
     
        private final static int NB_LIGNES = 12;
        private final static int NB_COLONNES = 12;
        private final static char UN = '1';
        private final static char ZERO = '0';
        private final static char[][] tableau = new char[NB_LIGNES][NB_COLONNES];
     
        public static void main(String[] args) {
            figure();
        }
     
        private static void figure() {
            for (int i = 0; i < NB_LIGNES; ++i) {
                if (i % NB_LIGNES == i || i % NB_LIGNES == 0) {
                    out.println();
                }
                for (int j = 0; j < NB_COLONNES; ++j) {
                    if (creerBordHautGauche(i, j)
                            || creerBordHautDroite(i, j)
                            || creerBordBasGauche(i, j)
                            || creerBordBasDroite(i, j)) {
                        continue;
                    }
                    tableau[i][j] = UN;
                    out.printf("%c ", tableau[i][j]);
                }
            }
            out.println();
        }
     
        // créer une méthode qui créee un triangle rectangle isocèle sur le bord haut gauche de la figure
        private static boolean creerBordHautGauche(final int i, final int j) {
            if ((i < 2 && j < 2)
                    || (i == 2 && j == 0)
                    || (i == 0 && j == 2)) {
                tableau[i][j] = ZERO; // on alimente la case avec un '0'
                out.printf("%c ", tableau[i][j]); // on affiche la portion du tableau
                return Boolean.TRUE;
            }
            return Boolean.FALSE;
        }
     
        // idem sur le bord haut droite de la figure
        private static boolean creerBordHautDroite(final int i, final int j) {
            if (i < 3 && j == NB_COLONNES - 1
                    || i == 1 && j == NB_COLONNES - 2
                    || i == 0 && j >= NB_COLONNES - 3) {
                tableau[i][j] = ZERO;
                out.printf("%c ", tableau[i][j]);
                return Boolean.TRUE;
            }
            return Boolean.FALSE;
        }
     
        // idem sur le bord bas droite de la figure
        private static boolean creerBordBasDroite(final int i, final int j) {
            if ((i >= NB_LIGNES - 3 && j == NB_COLONNES - 1)
                    || i == NB_LIGNES - 2 && j == NB_COLONNES - 2
                    || i == NB_LIGNES - 1 && j >= NB_COLONNES - 3) {
                tableau[i][j] = ZERO;
                out.printf("%c ", tableau[i][j]);
                return Boolean.TRUE;
            }
            return Boolean.FALSE;
        }
     
        // idem sur le bord bas gauche de la figure
        private static boolean creerBordBasGauche(final int i, final int j) {
            if (i == NB_LIGNES - 1 && j < 3
                    || i == NB_LIGNES - 2 && (j < 2)
                    || i == NB_LIGNES - 3 && j == 0) {
                tableau[i][j] = ZERO;
                out.printf("%c ", tableau[i][j]);
                return Boolean.TRUE;
            }
            return Boolean.FALSE;
        }
    }

    P.S : J'attire ton attention que cet exercice était réalisable "en s'y penchant à fond les manettes , en étant 100% focus". Il s'agit avant tout d'un problème algorithmique pour se casser la tête dessus. Par ailleurs, si ton problème est résolu peux-tu le mettre en résolu.
    Merci d'avance.

    Cordialement.
    Transact.

  3. #3
    Membre actif Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2004
    Messages : 215
    Points : 247
    Points
    247
    Par défaut
    Bonjour,

    Ça ressemble effectivement plus à un problème d'algorithmie que de Java.
    Avec une double boucle générant tes cases, pour moi, les cas où tu dois afficher un 0 sont :
    • coin haut/gauche = quand ton indice de colonne est inférieur à n - ton indice de ligne,
    • coin haut/droit = quand ton indice de colonne est supérieur ou égal à 2n + ton indice de ligne,
    • coin bas/gauche = quand ton indice de colonne est inférieur ou égal à ton indice de ligne - 2n,
    • coin bas/droit = quand ton indice de colonne est supérieur ou égal à 5n - (ton indice de ligne + 1)


    C'est peut-être bourrin, mais au final, un gros if qui regroupe toutes ces conditions devrait faire l'affaire pour dire que tu dois afficher un « 0 » (et du coup, dans le else, tu affiches « 1 »).

    Comme dit précédemment, n'oublie pas de marquer le sujet comme résolu si c'est bien le cas
    Chen norris
    C/C++, C#, Java, PHP & SQL coder
    Web developer

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/11/2012, 23h16
  2. générer des figures en métapost à partir de java
    Par abbba dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 19/11/2009, 19h14
  3. directx et java?? possible??
    Par jiraiya dans le forum DirectX
    Réponses: 3
    Dernier message: 09/07/2002, 20h55
  4. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 25/05/2002, 00h24
  5. Service de nommage java C++
    Par Anonymous dans le forum CORBA
    Réponses: 3
    Dernier message: 15/04/2002, 13h48

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