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

Langage Java Discussion :

Exercice de dessin d'un motif particulier


Sujet :

Langage Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Points : 0
    Points
    0
    Par défaut Exercice de dessin d'un motif particulier
    Bonjour à tous,
    J'ai un exercice à réaliser en java mais je n'ai aucune idée de comment faire.
    Est-ce que quelqu'un peut m'aider s'il vous plait ?
    Voici l'énoncé :

    (l'entrée d'un chiffre, on va prendre au hasard) 5
    et ce que doit me retourner le programme :

    aaaaaaaaa
    abbbbbbba
    abcccccba
    abcdddcba
    abcdedcba
    abcdddcba
    abcccccba
    abbbbbbba
    aaaaaaaaa

    Merci d'avance.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Hello,

    commence déjà par te demander comment faire afficher :

    abcde

    puis comment faire afficher :

    abcde
    abcde
    abcde
    abcde
    abcde

    Pour être franc, j'ai du mal à croire qu'on te fasse commencer directement par un exercice aussi difficile. Tu as travaillé en classe ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Points : 0
    Points
    0
    Par défaut merci pour ton retour
    merci pour ton retour
    non je n'ai pas travaillé en classe je suis autodidacte .
    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
    import algorea.Scanner;
    class Main
    {
       public static void main(String[] args)
       {
          Scanner entrée = new Scanner(System.in);
          String alpha = "abcdefghijklmnopqrstuvwxyz";
          int nombre = entrée.nextInt();
          int nbLigne = nombre*2-1;
          int nbCaractere =nombre*2-1;
          int compteur = 0;
          int decompte =nombre;
          for (int loop1 = 0; loop1 < nbLigne; loop1++)
          {
             for (int loop2 = 0; loop2 < nbCaractere; loop2++)
             {
                System.out.print(alpha.charAt(compteur));  
                   if (loop2 <loop1&&loop2<nombre)
                   {
                      compteur=compteur+1;
                   }
                   if (loop2>nombre && loop2== nbCaractere-loop2)
                   {
                      compteur=compteur-1;
                   }
              }
             System.out.println();  
             compteur=0;
          }  
       }
    }
    >
    voila ce que j'arrive a faire

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Ouaip tu sais avancer dans les lettres mais pas reculer.

    En réalité ça ne sert à rien de calculer le nombre total de lignes, puisque tu ne dois pas continuer à avancer sur la totalité des lignes mais jusqu'à la moitié, et après il faut reculer.
    Même remarque pour les lettres.

    Essaie déjà de faire afficher ça :

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

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Points : 0
    Points
    0
    Par défaut bonjour a tous
    bonjour
    Le probleme c'est que je n,'arrivee pas a faire
    abbbbbbba

  6. #6
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    L'exercice est rigolo.
    J'ai une solution qui tient avec deux boucles "for" imbriquées uniquement.

    La bonne lettre peut se calculer en une instruction (enfin, techniquement, 3, mais ça tient largement sur une ligne )

    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
     
    public class TestList {
     
     
    	public static void main(String[] args) {
     
    		int size = 9;
    		char[] tab = {'a', 'b', 'd', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};
     
    		for(int i=0;i<size;i++) {
    			StringBuilder sb = new StringBuilder();
    			for(int j=0;j<size;j++) {
    				int pos = ..... //:lol:
    				sb.append(tab[pos]);
    			}
    			System.out.println(sb);
    		}
     
    	}
     
    }
    Si vous trouvez pas, je vous donnerai la solution demain.
    Je ne répondrai à aucune question technique en privé

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Points : 0
    Points
    0
    Par défaut Merci
    Merci enormement ca fait 3 jours que je suis dessus. J'ai pu regardé mais sincerement je trouve pas d'autant plus que j'ai pas encore vu les Stringbuilders

  8. #8
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    J'ai une solution en récursif sans tableau ni formules ou calculs complexes, et une solution "graphique", et il y a probablement plein d'autres manières de le faire. Mais l'important c'est que @syllatre trouve la solution de lui-même.

    Et commencer par résoudre un problème plus simple comme celui présenté par @thelvin est une voie plus simple et plus formatrice. Ensuite comprendre la particularité des autres lignes et de leur différence avec le cas simple, progressivement.
    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.

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Points : 0
    Points
    0
    Par défaut bonjour a tous
    joel.drigo tu as raison dans le fond et c'est d'ailleur ce que j'ai essaye de faire depuis maintenant 4 mais je ne trouve pas la reponse. Je mediterais sur la solution pouR comprendre mon erreur . J'ai mis tellement de temps sur cet exercice que la reponse restera a vie dans ma tete Milie j'ai essayer de trouver le bout manquant mais sans grand succes

  10. #10
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par syllatre Voir le message
    J'ai mis tellement de temps sur cet exercice que la réponse restera a vie dans ma tête
    Le souci est peut-être bien là.

    1. Il n'y a jamais qu'une seule solution à un problème. Et chaque solution peut avoir ses avantages, ses inconvénients.
    2. Avoir la solution à un problème ne permet que très rarement de comprendre le cheminement qui permet de l'obtenir. Si je te dis j'ai en entrée 5,42 et 27 et j'ai en sortie 24,48. Comment pourrais-tu déterminer facilement quels calculs j'ai effectués pour passer de l'entrée à la sortie ?
    3. Il n'existe que peu de problématiques type pour lesquelles on a une solution universelle à appliquer telle quelle. On a plus souvent des formes ressemblantes et hybrides et l'important, ce n'est pas de connaître par cœur un bout de code à copier/coller, mais savoir analyser, déduire, adapter, mélanger. Avoir une tête bien faite plutôt qu'une tête bien pleine (Montaigne si tu nous écoutes... ).
    4. Il n'y a aucun problème à ne pas réussir à résoudre un problème du premier coup, surtout s'il est particulièrement complexe. C'est comme pour un alpiniste : il ne s'attaque pas directement à l'Everest, ou au K2, il s'entraîne sur des petits sommets, échoue, recommence, puis progresse vers des sommets de plus en plus difficile. Et même s'il recommence 7 fois chaque sommet, il en acquière à chaque fois une expérience qui lui permet de plus facilement gravir le sommet essayé, mais également d'autres qui présentent des difficultés similaires. En commençant par des problèmes simples, tu acquières des réflexes qui permettent de résoudre des problèmes plus complexes plus facilement. De plus, la plus simple des manières de résoudre un problème complexe est de le découper en problèmes plus simple : pour peu que le problème complexe soit une répétition avec variation de problèmes plus simple, on peut traiter la solution simple, puis déterminer comment gérer les variations, et généraliser ensuite.
    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.

  11. #11
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    On va faire l'exercice différement.

    On laisse tomber les lettres, et on essaye plutôt de mettre des chiffres (évidemment, de 0 à 9)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    000000000
    011111110
    012222210
    012333210
    012343210
    012333210
    012222210
    011111110
    000000000
    As-tu une idée qui, à partir de la taille (ici 9), et de la position (de 0 à 8 pour les lignes et de 0 à 8 pour les colonnes) donnent le bon chiffre ?

    Sinon, j'adhère aux propos de joel.drigo. Ma technique est peut-être un peu trop matheuse et n'est clairement pas "la solution", il y en a tout un tas.
    Je ne répondrai à aucune question technique en privé

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Points : 0
    Points
    0
    Par défaut pas de d'idee
    Merci .
    Mais comme je vous disais ca fait 4 jours que je suis dessus j'ai retourné le probleme dans tout les sens succes . La reponse avec une explication serait la bienvenu car je suis en train de perdre du temps sur mon planning

  13. #13
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Il y a une autre façon d'aborder la chose plus facilement, ce que j'ai appelé la solution graphique.

    On voit qu'en fait, si on voulait dessiner à la main le résultat, cela consisterait à dessiner un carré de a, puis à l'intérieur un carré de b, puis à l'intérieur un carré de c, etc...

    Tu peux par exemple utiliser un tableau à 2 dimensions de char pour prédessiner le carré (tu le remplis de lettres), et ensuite tu affiches le tableau de char.

    Essaye déjà comme ça, en boucle, ou en récursif. Commence par dessiner un carré de a. Donc réfléchis à la taille de ce carré : pour un paramètre de 5, on a 4 carrés imbriqués plus la lettre centrale. Pour un paramètre de 1, on aurait juste a, donc un carré de 1. Pour un paramètre de 2, on aurait un carré de a avec b au centre. Etc. Donc Quelle est la taille du carré pour un nombre n ?

    Utiliser des chiffres au lieu de lettres est aussi une simplification. C'est plus facile de comprendre la progression avec des chiffres (c'est comme ça qu'on résout d'ailleurs ce genre de problème : en chiffres, qu'on convertit ensuite en lettres (par un tableau de correspondances comme dans ton code, ou par char c = (char)('a' + n);)
    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.

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Points : 0
    Points
    0
    Par défaut merci
    merci à tous j'ai reussi a ma maniere. c'est pas fameux mais ca marche.
    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
    67
    68
    69
    70
    71
    import algorea.Scanner;
    class Main
    {
       static void partie1 (int nombre)
       {
           String alpha = "@abcdefghijklmnopqrstuvwxyz";
          int nbCaractere =nombre*2-1;
          int compteur = 1;
          int decompte =nbCaractere;
          for (int loop1 = 1; loop1 < nombre; loop1++)
          {
             for (int loop2 = 1; loop2 <=nbCaractere; loop2++)
             {                           
                   System.out.print(alpha.charAt(compteur));
                   if (loop2 <loop1 )
                   { 
                      compteur=compteur+1;               
                   } 
                   if (loop2>=decompte)
                   {
                      compteur=compteur-1;
                   }
             }
             decompte = decompte -1;
             System.out.println(); 
             compteur=1;
          } 
       }
       static void partie2 (int nombre)
       {
           String alpha = "@abcdefghijklmnopqrstuvwxyz";
          int nbCaractere =nombre*2-1;
          int compteur = 1;
          int decompte =nombre;
          int decompte2 = nombre;
          for (int loop1 = 1; loop1 <= nombre; loop1++)
          {
             for (int loop2 = 1; loop2 <=nbCaractere; loop2++)
             {                           
                   System.out.print(alpha.charAt(compteur));
                   if (loop2 <decompte )
                   { 
                      compteur=compteur+1;               
                   } 
                   if (loop2 >=decompte2)
                   {
                      compteur = compteur -1;
                   }
             }
             decompte = decompte -1;
             decompte2=decompte2+1;
             System.out.println(); 
             compteur=1;
          } 
       }
     
       public static void main(String[] args)
       {
          Scanner entrée = new Scanner(System.in);
          int nombre = entrée.nextInt();
          if (nombre==1)
          {
             System.out.print ("a");
          }
          else
          {         
             partie1(nombre);
             partie2(nombre);
          }         
       }
    }

  15. #15
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par syllatre Voir le message
    Merci .
    Mais comme je vous disais ca fait 4 jours que je suis dessus j'ai retourné le probleme dans tout les sens succes . La reponse avec une explication serait la bienvenu car je suis en train de perdre du temps sur mon planning
    Perdre du temps sur mon planning, c'est ce qu'il m'arrive tous les jours

    Indication supplémentaire.
    Que penses-tu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		for(int i=0;i<size;i++) {
    			StringBuilder sb = new StringBuilder();
    			for(int j=0;j<size;j++) {
    				int pos = Math.min(i, j);
    				sb.append(pos);
    			}
    			System.out.println(sb);
    		}
    Je ne répondrai à aucune question technique en privé

  16. #16
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par syllatre Voir le message
    Bonjour
    je ne peux pas faire comme ca car le nombre est une entrée donc je ne peux pas preremplir un tableau a deux dimensions.
    Bien sûr que si.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void method(int param) {
       char[][] array = new char[param][param];
    }
    Citation Envoyé par syllatre Voir le message
    Je ne suis pas encore au chapitre de tableau a deux dimensions en plus.
    Bon, ça c'est déjà plus valable comme raison. Mais je trouve étonnant qu'on traite des manipulations algorithmique comme celle de l'exercice avant les structures de données.

    Citation Envoyé par syllatre Voir le message
    La solution est celle de milie mais je bute sur la formule mathématique.
    Oui, on peut faire une formule un peu complexe (probablement comme dans la solution de millie), mais en décomposant, on a au pire des incrémentations (et éventuellement des décrémentations), rien de transcendantal donc.

    On peut écrire par exemple :
    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
    public static void main(String[] args) {
    	print(5);
    }
     
    public static void print(int n) {
    	if ( n>=1 && n<=26 ) {
    		for(int i=0; i<n; i++) {
    			char a='a';
    			for(int j=1; j<=n; j++) {
    				System.out.print(a);
    				if ( j<=i ) {
    					a++;
    				}
    			}
    			System.out.println();
    		}
    	}
    }
    Là, je t'aide pour le quart haut-gauche. Aucune formule mathématique complexe. Le reste devrait être plutôt aisé maintenant.
    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.

  17. #17
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    merci beaucoup j'ai codé l'équivalent d un dictionnaire mais ca marche
    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
    67
    68
    69
    70
    71
    import algorea.Scanner;
    class Main
    {
       static void partie1 (int nombre)
       {
           String alpha = "@abcdefghijklmnopqrstuvwxyz";
          int nbCaractere =nombre*2-1;
          int compteur = 1;
          int decompte =nbCaractere;
          for (int loop1 = 1; loop1 < nombre; loop1++)
          {
             for (int loop2 = 1; loop2 <=nbCaractere; loop2++)
             {                           
                   System.out.print(alpha.charAt(compteur));
                   if (loop2 <loop1 )
                   { 
                      compteur=compteur+1;               
                   } 
                   if (loop2>=decompte)
                   {
                      compteur=compteur-1;
                   }
             }
             decompte = decompte -1;
             System.out.println(); 
             compteur=1;
          } 
       }
       static void partie2 (int nombre)
       {
           String alpha = "@abcdefghijklmnopqrstuvwxyz";
          int nbCaractere =nombre*2-1;
          int compteur = 1;
          int decompte =nombre;
          int decompte2 = nombre;
          for (int loop1 = 1; loop1 <= nombre; loop1++)
          {
             for (int loop2 = 1; loop2 <=nbCaractere; loop2++)
             {                           
                   System.out.print(alpha.charAt(compteur));
                   if (loop2 <decompte )
                   { 
                      compteur=compteur+1;               
                   } 
                   if (loop2 >=decompte2)
                   {
                      compteur = compteur -1;
                   }
             }
             decompte = decompte -1;
             decompte2=decompte2+1;
             System.out.println(); 
             compteur=1;
          } 
       }
     
       public static void main(String[] args)
       {
          Scanner entrée = new Scanner(System.in);
          int nombre = entrée.nextInt();
          if (nombre==1)
          {
             System.out.print ("a");
          }
          else
          {         
             partie1(nombre);
             partie2(nombre);
          }         
       }
    }
    Un grand merci à Joel drigo et milie qui ont pris le temps d'expliquer à un newbi .
    Par curiosité je veux bien voir le code que tu voulais m'envoyer au depart stp MILIE et si ca te derange pas de me mettre des commentaires sur la programmation ca serait top SI tu as le temps biensur

  18. #18
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Du coup, voici ma solution :
    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
     
    public class TestList {
     
     
    	public static void main(String[] args) {
     
    		int size = 9;
    		char[] tab = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'}; //new char[26];
     
    		for(int i=0;i<size;i++) {
    			StringBuilder sb = new StringBuilder();
    			for(int j=0;j<size;j++) {
    				int pos = Math.min(Math.min(size-1-i, size-1-j), Math.min(i, j));
    				sb.append(tab[pos]);
    			}
    			System.out.println(sb);
    		}
     
    	}
     
    }
    Je ne répondrai à aucune question technique en privé

  19. #19
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Points : 0
    Points
    0
    Par défaut Merci
    Math.min recupere la valeur la plus petite ?
    et à quoi sert StringBuilder ? svp

  20. #20
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Ou :


    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
     
    public class TestGen {
     
    	public static void main(String[] args) {
    		print(-1);
    		print(5);
    		print(0);
    		print(1);
    		print(9);
    		print(26);
    	}
     
    	public static void print(int n) {
    		n--;
    		if ( n>=0 && n<26 ) {
    			lines(0,n);
    		}
    	}
    	 private static void lines(int i, int n) {
    		line(i, 0, n);
    		System.out.println();
    		if ( i<n ) {
    			lines(i+1,n);
    			line(i, 0, n);
    			System.out.println();
    		}
    	}
     
            private static void line(int i, int j, int n) {
    		char c = 'a';
    		c+=j<=i?j:i;
    		System.out.print(c);
    		if ( j<n ) {
    			line(i, j+1, n); 
    			System.out.print(c);
    		}
    	}
     
    }



    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
     
    public class TestGen {
     
    	public static void main(String[] args) {
    		print(-1);
    		print(5);
    		print(0);
    		print(1);
    		print(9);
    		print(26);
    	}
     
    	public static void print(int n) {
    		n--;
    		if ( n>=0 && n<26 ) {
    			lines(0,n);
    		}
    	}
            private static void lines(int i, int n) {
    		line(i, 0, n, 'a');
    		System.out.println();
    		if ( i<n ) {
    			lines(i+1,n);
    			line(i, 0, n,'a');
    			System.out.println();
    		}
    	}
    	private static void line(int i, int j, int n, char c) {
    		System.out.print(c);
    		if ( j<n ) {
    			if ( j<i ) {
    				c++;
    			}
    			line(i, j+1, n, c); 
    			if ( j<i ) {
    				c--;
    			}
    			System.out.print(c);
    		}
    	} 
     
    }



    Méthode "graphique" :
    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
     
    public class TestGen {
     
    	public static void main(String[] args) {
    		print(-1);
    		print(5);
    		print(0);
    		print(1);
    		print(9);
    		print(26);
    	}
     
    	private static void print(int n) {
    		n--;
    		if ( n>=0 && n<26 ) {
    			int h = n*2+1; // taille du tableau pour prédessiner le carré
    			char[][] tab = new char[h][h];
    			printV1(tab, 0, h, 'a');
    			//printV2(tab, 0, h, 'a');
    			Arrays.stream(tab).map(String::new).forEach(System.out::println); // affichage du tableau
    		}
    	}
     
    	// méthode qui ne dessine que les bords des carrés
    	private static void printV1(char[][] array, int x, int n, char c) {
    		n--;
    		for(int i=x; i<=n; i++) {
    			array[n][i]=array[i][n]=array[x][i]=array[i][x]=c;
    		}
    		x++; // carré suivant
    		if ( n>x ) {
    			c++;
    			printV1(array, x, n, c);
    		} 
    	}
     
    	// méthode qui remplit les carrés entièrement
    	private static void printV2(char[][] array, int x, int n, char c) { 
    		for(int i=x; i<n; i++) {
    			for(int j=x; j<n; j++) {
    				array[i][j]=c;
    			}
    		}
    		x++; // carré suivant
    		n--;
    		if ( n>x ) {
    			c++;
    			printV2(array, x, n, c);
    		} 
    	}
     
     
     
    }




    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
    public class TestGen {
     
    	public static void main(String[] args) {
    		print(-1);
    		print(5);
    		print(0);
    		print(1);
    		print(9);
    		print(26);
    	}
     
    	public static void print(int n) {
    		if ( n>0 && n<=26 ) {
    			int l=n*2-1;
    			int v=1;
    			for(int i=1; i<=l; i++) {
    				char a='a';
    				for(int j=1; j<=l; j++) {
    					System.out.print(a);
    					if ( i<n) {
    						if ( j<i ) {
    							a++;
    						}
    						else if ( j>l-i ) {
    							a--;
    						}
    					}
    					else {
    						if ( j<=l-i ) {
    							a++;
    						}
    						else if ( j>=i ) {
    							a--;
    						}
    					}
     
    				}
    				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.

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/04/2007, 07h50
  2. Encapsulation, besoin d'aide svp
    Par 3xplo dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 09/02/2007, 14h52
  3. besoin d'aide SVP
    Par geulmim dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/04/2006, 10h01
  4. Réponses: 5
    Dernier message: 21/01/2006, 23h24

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