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

JavaScript Discussion :

Algorithme JS pour créer des formes


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 10
    Par défaut Algorithme JS pour créer des formes
    Bonjour à tous,

    Le but de l'exercice est de réaliser des formes à l'aide de boucles for ou while.

    Voici ci dessous les figures que je doit afficher en console.log
    Nom : Capture d’écran 2018-10-06 à 15.17.34.png
Affichages : 1502
Taille : 42,2 Ko

    Sauriez vous me guider pour la réalisation de ces figures ?
    Merci beaucoup !

    PS: voici comment j'ai procédé pour faire la première page de figure
    Nom : Capture d’écran 2018-10-06 à 15.20.33.png
Affichages : 1458
Taille : 34,6 Ko
    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
     //Première figure
    var x = "";
    for (i= 1; i<=4;i++){
    x = x+"x";
     
    console.log(x)
    }
     
    console.log(espace);
    // Deuxième figure
    var j=5;
    for (var i = 0; i <= j; i++){
    var c=" ";
    for (var x = 0; x <= i; x++){
    c=c+i
    }
    console.log(c);
    }
     
    console.log(espace);
    // Troisième figure
    var j=4;
    for (var i = 0; i <= j; i=i+1){
    var c=" ";
    for (var x = 4; x >= i; x=x-1){
    c=c+i
    }
    console.log(c);
    }
     
    console.log(espace);
    // 4eme Figure
    var x = "xxxxxxxxxxxxxxx";
    for (i = 1; i <= 5; i++){
    x = x+" ";
     
    console.log(x)
    }
     
    console.log(espace);
    // 5eme Figure
    var x = "";
    for (i = 1; i <= 5; i++){
    x = x+"x";
     
    console.log(x)
    }
    var x = "xxxx";
    var n = 4
    for (i = 5; i > 1; i=i-1, n=n-1){
     
    console.log(x.substr(0,n))
    }
      0  0

  2. #2
    Invité
    Invité(e)
    Par défaut
    slt,

    la premiere t'as 8 lignes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    pour i=0 à 7
        si i%7==0 alors afficher .
        sinon afficher '|' + i*' '+c
            avec c == '\' si i < 3 sinon /
    la deuxieme pareil...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    pour i = 0 à 4
        si i%7==0 alors
            pour afficher 15*'-'
        sinon
            afficher '|' + 13*' ' + '|'
    troisieme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    pour i = 1 a 3
        afficher (3-i)*' '+'/'+' '*((i-1)*2) + '\'+(3-i)*' '
    pour i = 1 à 3
        //a noter les trailing spaces ici servent à rien je les laisse pour la symetrie...
        afficher (i)*' '+'\'+' '*((2-i)*2)+'/'+(i)*' '
    quatrieme
    c'est la même chose :/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    pour i = 1 a 5
        afficher (5-i)*' '+i*'/'+i*'\'+(5-i)*' '
    même chose pour la partie basse
    cinquieme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    pour i = 1 a 4
        //i est le nombre detoiles... pour la ligne i
        //letoile est centree ...
        afficher ' '*(4-i) + (for j = 1 a i) concatener '*' +' '
    bon chui pas une star du pseudo code mais je présume que c'est compréhensible??

    à noter ' '*10 ou 10*' ' ca veut dire concaténer 10 fois le string.
    tu peux faire ca avec ' '.repeat(10)

    pe quelques coquilles sur les indices mais bon, faut que tu transpires un peu aussi

    edit: bon un peu trop confiance en moi et ma(mes) biere, je reviens ac un pseudo code un peu plus correct des que le code marche :/ (ce qu'il ne faut evidemment jamais faire )
    edit: ok corrigé (sous reserve que je me relise correctement..). laissé quelques indices un peu pas bon.

    pour guise de teaser
    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
     
    .
    |\
    | \
    |  \
    |  /
    | /
    |/
    .
    ---------------
    |             |
    |             |
    |             |
    ---------------
      /\
     /  \
    /    \
    \    /
     \  /
      \/
        /\    
       //\\   
      ///\\\  
     ////\\\\ 
    /////\\\\\
    \\\\\/////
     \\\\//// 
      \\\///  
       \\//   
        \/    
       * 
      * * 
     * * * 
    * * * *
    Dernière modification par Invité ; 06/10/2018 à 19h12.
      0  0

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 10
    Par défaut
    Je te remercie vraiment de ton aide ! Je vais bosser la dessus merci
      0  0

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 10
    Par défaut
    J'ai avancé dessus mais je bloque pour inverser l'ajout d'espace pour la première figure
    Aussi je ne comprend pas malgré mes recherches pourquoi toutes mes lignes ne s'affichent pas et affiche un chiffre devant (figure 2 & 5 ):
    Nom : Capture d’écran 2018-10-07 à 00.32.16.png
Affichages : 1421
Taille : 192,0 Ko

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    console.log(espace);
    //6eme figure
    var c = ""; 
    for (var i=0; i<=7; i++){
    if ( i%7==0){
    console.log(".");
    }
    else {
    console.log("|" + " ".repeat(i) + c);
    }
    if (i < 3){
    c = "\\";
    } else{
    c = "/";
    }
    }
     
    console.log(espace);
    //7eme figure 
    for (var i=0; i<=4; i++){
    if ( i%4==0){
    console.log("-".repeat(15));
    }
    else {
    console.log("|" + " ".repeat(13) + "|");
    }
    }
     
    console.log(espace);
    //8eme figure 
    for (var i=1; i<=3; i++){
    console.log(" ".repeat(3-i) + "/" + " ".repeat((i-1)*2) + "\\" + " ".repeat(3-i) );
    }
    for (var i=0; i<3; i++){
    console.log(" ".repeat(i) + "\\" + " ".repeat(((2-i)*2)) + "/" + " ".repeat(i));
    }
     
    console.log(espace);
    //9eme figure 
    for (var i=1; i<=5; i++){
    console.log(" ".repeat(5-i) + "/".repeat(i) + "\\".repeat(i) +" ".repeat(5-1));
    }
    for (var i=0; i<5; i++){
    console.log(" ".repeat(i) + "\\".repeat(5-i) + " ".repeat(i-i) + "/".repeat(5-i) + " ".repeat(i));
    }
     
    console.log(espace);
    //10 ème figure
    for (var i=1; i<4; i++){
    console.log(" ".repeat(4-i));
    }
    for (var j=1; j<=i;j++){
    console.log("*".repeat(i) + " ".repeat(i))
    }
    Je te remercie grandement pour ton aide !
      0  0

  5. #5
    Invité
    Invité(e)
    Par défaut
    re,

    affiche un chiffre devant (figure 2 & 5 ):
    c'est pas ton code, c'est firefox (ou ton navigateur)
    1. quand tu affiches une ligne de blanc, il (probablement) ignore ton output
    2. quand tu affiches une ligne qui se repète (ex: console.log(1);console.log(1)) il affiche le nombre d'occurrence devant la ligne (et ne l'affiche qu'une seule fois)

    pour ex 2:
    au lieu (de fait...) d'afficher trois fois console.log, vu que tu sais te servir de repeat(...) tu as qu'as répéter trois fois... et ne faire qu'un console.log
    console.log(('laligne'+'\n').repeat(3))
    tu verras que ya un '\n' de trop, tu peux l'enlever avec substring(0, s.length-1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    s = ('laligne'+'\n').repeat(3)
    s = s.substring(0, s.length-1)
    pour 5:
    t'as grossièrement écrit ta boucle sur j an dehors de i, et comme et à l'intérieur de ta boucle tu te sers que de i, à chaque itération, ben ... tu fais la même chose

    pour 1:
    un peu etrange de modifier c apres avoir affiché, voici un exemple "plus clair":
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        for(let i=0; i<=7; ++i){
            if(i%7==0){
                console.log('.')
            }else{
                if(i<=3){
                    console.log('|'+' '.repeat(i-1)+'\\')
                }else{
                    console.log('|'+' '.repeat(6-i)+'/')
                }
     
            }
        }

    à noter que tu peux aussi concaténer tes string (au lieu de utiliser repeat pour pallier pb 2 et 5) et faire un console.log qu'à la fin
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var s = '';
    for(let i=0; i<=7; ++i){
        if(i%7==0){
            s += '.'+'\n'
        }else{
            if(i<=3){
                s += '|'+' '.repeat(i-1)+'\\' + '\n'
            }else{
                s += '|'+' '.repeat(6-i)+'/' + '\n'
            }
        }
    }
    console.log(s.substring(0, s.length-1))
      1  0

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 10
    Par défaut
    Bon désolé de t'embêter avec les 2 et le 5 mais je galère vraiment :/
    J'ai essayé d'utiliser un seul console.log comme tu m'a conseillé sauf que je m'y suis surement mal pris:
    Il n'y a pas de retour à la ligne
    Nom : Capture d’écran 2018-10-07 à 10.26.26.png
Affichages : 1337
Taille : 22,9 Ko


    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
     //exo 2
    console.log(espace)
    var s = '';
    for(let i=0; i<=4; ++i){
    if(i%4==0){
    s += "-".repeat(15);
    }
    else{
    s += "|" + " ".repeat(13) + "|" ;
    }
    }
    console.log(s)
     
    //exo 5 
    console.log(espace)
    var s = '';
    for(let i=1; i<=4; ++i){
    s += " ".repeat(4-i);
    }
    for(let j=1; j<=i; ++j){
    s += "*".repeat(j) + " ".repeat(i);
    }
    console.log(s)
      0  0

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/05/2017, 11h00
  2. Recherche d'un logiciel pour créer des algorithmes
    Par Seb003 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 02/10/2005, 17h46
  3. pb pour créer des index [too many keys]
    Par Issam dans le forum Débuter
    Réponses: 3
    Dernier message: 19/01/2005, 20h58
  4. [CR] Version nécessaire pour créer des fichiers DSR ?
    Par aysse dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/11/2003, 09h01
  5. quel langage pour créer des "applications" sur 1 s
    Par jaribu dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 30/07/2003, 14h06

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