Précédent   Forum du club des développeurs et IT Pro > C et C++ > C > Débuter
Débuter Forum d'entraide pour débuter en langage C. Avant de poster -> FAQ C
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 22/11/2012, 22h08   #1
hannibal007
Futur Membre du Club
 
Homme
Inscription : novembre 2012
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2012
Messages : 21
Points : 17
Points : 17
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 ?
hannibal007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2012, 22h22   #2
LittleWhite
Responsable 2D/3D/Jeux


 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 10 752
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 : 10 752
Points : 42 779
Points : 42 779
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.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2012, 22h40   #3
hannibal007
Futur Membre du Club
 
Homme
Inscription : novembre 2012
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2012
Messages : 21
Points : 17
Points : 17
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 ?
hannibal007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2012, 23h17   #4
Obsidian
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 4 639
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Essonne (Île de France)

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

Informations forums :
Inscription : septembre 2007
Messages : 4 639
Points : 11 093
Points : 11 093
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.
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2012, 23h40   #5
hannibal007
Futur Membre du Club
 
Homme
Inscription : novembre 2012
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2012
Messages : 21
Points : 17
Points : 17
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 !!

hannibal007 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2012, 06h14   #6
Sve@r
Expert Confirmé Sénior
 
Avatar de Sve@r
 
Homme Frédéric
Ingénieur développement logiciels
Inscription : février 2006
Messages : 3 532
Détails du profil
Informations personnelles :
Nom : Homme Frédéric
Âge : 45
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 : 3 532
Points : 7 059
Points : 7 059
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
Sve@r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h13.


 
 
 
 
Partenaires

Hébergement Web