Triangle d'étoile avec langage c

Résolu/Fermé
sossos - 9 nov. 2010 à 20:48
hiba125 Messages postés 5 Date d'inscription vendredi 31 mars 2017 Statut Membre Dernière intervention 8 avril 2017 - 8 avril 2017 à 06:49
Bonjour,

s'il vous plait je veux savoir comment je peux obtenir un triangle d'étoile comme le suivante :
*
**
***
****
avec language c
et merci

1 réponse

mamiemando Messages postés 33344 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 7 novembre 2024 7 803
9 nov. 2010 à 21:18
Plutôt que de te donner la solution directement je te propose de te donner une ligne directrice et on te guidera si tu bloques.

Commence par raisonner "en français"

Afficher 1 étoile, puis passer à la ligne
Afficher 2 étoiles, puis passer à la ligne
...
Afficher n étoiles, puis passer à la ligne


Soit :

Pour i allant de 1 à n compris
  Afficher i étoiles
  Passer à la ligne
Fin pour


Soit encore :

Pour i allant de 1 à n compris
  Pour j allant de 1 à i compris
    Afficher une étoile
  Fin pour
  Passer à la ligne
Fin pour


Il ne reste plus qu'à traduire ça en C.

Autre approche :

s = ""
Pour i allant de 1 à n compris
  Ajouter une étoile dans s
  Afficher s
Fin pour


La complexité algorithmique est meilleur (O(n) au lieu de O(n^2)) mais ça force à stocker en mémoire une chaîne (celle de la ligne à écrire) et à savoir faire une allocation dynamique pour allouer un buffer de taille n.

Vu l'exercice je doute que ton prof attende ce genre de solution et tu pourras difficilement la "repomper" directement tout en restant crédible.

#include <stdio.h>
#include <stdlib.h>

int main(){
    unsigned int i, n = 16;
    char *buffer = (char *)calloc(sizeof(char), n);
    for(i = 0; i < n; ++i){
        buffer[i] = '*';
        printf("%s\n",buffer);
    }
    free(buffer);
    return 0;
}
8
the F Messages postés 150 Date d'inscription dimanche 22 mars 2009 Statut Membre Dernière intervention 22 mars 2011 13
9 nov. 2010 à 21:56
Salut
Pour simplifier pensez a utiliser deux boucles imbriques :

for (i=0;i<nombres de lignes ;i++)
for(j=0; j < i ; j++)
printf("*");
0
mamiemando Messages postés 33344 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 7 novembre 2024 7 803
10 nov. 2010 à 00:03
Sauf que j'ai déjà parlé de cette approche en pseudo code pour laisser chercher sossos. En plus le code est faux car tu as oublié de gérer les retours chariots :-/
0
hiba125 Messages postés 5 Date d'inscription vendredi 31 mars 2017 Statut Membre Dernière intervention 8 avril 2017
8 avril 2017 à 06:49
merci
0