Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Candidat au titre de Membre du Club
    Homme Profil pro
    Inscrit en
    novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : novembre 2012
    Messages : 25
    Points : 13
    Points
    13

    Par défaut Afficher un triangle isocèle

    Salut, je suis débutant en langage C et je voudrais votre aide avec un code qui affiche un triangle isocèle de hauteur n (saisi au clavier), de la
    manière suivante :
    *
    ***
    *****
    *******
    ********* exemple pour n=5

    pour la saisie de n c'est bon, mais pour l'affichage selon la valeur de n comment faire pour afficher le caractère * n fois avec une itération de i+2 en initialisant i=1 ?

  2. #2
    Responsable 2D/3D/Jeux

    Avatar de LittleWhite
    Homme Profil pro Alexandre Laurent
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    16 699
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Laurent
    Localisation : France

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

    Informations forums :
    Inscription : mai 2008
    Messages : 16 699
    Points : 86 141
    Points
    86 141

    Par défaut

    Bonjour,

    Montrez nous votre code actuel et dites où cela bloque.
    Sinon, faudra lire un cours de C : http://c.developpez.com/cours/ et utiliser une boucle for.
    Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi
    La rubrique a aussi un blog !

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Candidat au titre de Membre du Club
    Homme Profil pro
    Inscrit en
    novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : novembre 2012
    Messages : 25
    Points : 13
    Points
    13

    Par défaut

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
        int x,i;
        printf("\n");
        do
        {
         printf(" donner un nombre entier : \n ");
         scanf("%d",&x);
        }
        while (x<1);
     
        for(i=1;i<=x;i+2)
         {
          printf(" * \n ");
         }
     
        return 0;
    }
    pour ce code il affiche le caractère * imbriqué l'une sous l'autre à façon illimité : je ferme l'éditeur de l'invite de commande manuellement avec la souris pour forcer le stop de l'exécution de programme !!! de plus quelle est l'astuce qui permet d'afficher le "*" ième fois selon la valeur de i ?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
        int x,i;
        char j;
     
        printf("\n");
        do
        {
         printf(" donner un nombre entier \n ");
         scanf("%d",&x);
        }
        while (x<1);
        j='*';
        for(i=1;i<=x;i+2)
         {
          printf(" %c \n ",j*i);
         }
     
        return 0;
    }
    j'ai modifié le programme : j'ai déclaré une variable de type char dont le contenu est le '*' puis selon la valeur de x=4 par exemple il sera afficher 1 3 5 7 le caracère * mais helas ! le programme affiche d'une manière illimité et le compilateur (code blocks) m'indique devant la ligne de la boucle FOR : statement no effect = aucun effet ?

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    septembre 2007
    Messages
    5 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2007
    Messages : 5 452
    Points : 13 911
    Points
    13 911

    Par défaut

    Bonjour,

    Il ne faut pas écrire :

    … mais :

    … ou plus simplement :

    Autrement, « i+2 » est une expression valide et évaluée par le programme, mais qui n'implique aucune affectation. La variable n'est donc jamais mise à jour et garde en permanence sa valeur initiale, d'où l'affichage illimité.

    Pour le reste, tu as le droit d'imbriquer une boucle dans une autre. Par exemple :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
        int x,y;
     
        for (x=0;x<5;x++)
        {
           for (y=0;y<5;y++)
           {
                printf ("x=%d et y=%d\n",x,y);
           }
        }
    Ici, la boucle x va répéter cinq fois son contenu, lequel contient une boucle y qui se répete elle-même cinq fois. Ce programme va donc afficher vingt-cinq lignes en tout.

    Tu peux te servir de cette possibilité pour écrire les n lignes formant ton triange, et tu as le droit d'utiliser l'indice de la première boucle dans la seconde pour savoir quelle longueur doit mesurer chacune d'entre elles.

  5. #5
    Candidat au titre de Membre du Club
    Homme Profil pro
    Inscrit en
    novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : novembre 2012
    Messages : 25
    Points : 13
    Points
    13

    Par défaut

    Code :
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
        int x,i,k;
     
        printf("\n ");
        do
        {
         printf(" donner un nombre entier \n ");
         scanf("%d",&x);
        }
        while (x<1);
        printf("\n ");
        k=1;
        for(i=1;i<=x;i++)
        {
         while(k<=2*i-1)
         {
          printf("*");
          k++;
         }
         k=1;
         printf(" \n ");
        }
        for(i=1;i<=x;i++)
        {
         for(k=1;k<=2*i-1;k++)
         {
          printf("*");
         }
         printf(" \n ");
        }
        return 0;
    }
    et voilà la solution !!! avec la boucle While imbriquée dans for et puis 2 boucles for imbriquées !! merci admin pour votre conseil d'affectation je ne le sait pas d'avance !!


  6. #6
    Expert Confirmé Sénior
    Avatar de Sve@r
    Homme Profil pro Frédéric
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    4 530
    Détails du profil
    Informations personnelles :
    Nom : Homme Frédéric
    Âge : 46
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 4 530
    Points : 10 140
    Points
    10 140

    Par défaut

    Citation Envoyé par hannibal007 Voir le message
    Code c :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        k=1;
        for(i=1;i<=x;i++)
        {
         while(k<=2*i-1)
         {
          printf("*");
          k++;
         }
         k=1;
         printf(" \n ");
        }
    Bonjour
    Pourquoi mettre 2 fois l'instruction k=1 ???
    Code c :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for(i=1;i<=x;i++)
    {
        k=1;
        while(k<=2*i-1)
        {
            printf("*");
            k++;
        }
        printf(" \n ");
    }
    Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
    Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit.
    Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant.
    Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation.
    Dr. Adrian Rogers (1931-2005)

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •