Triangle d'étoile avec langage c

Résolu/Fermé
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

  1. Modérateur
    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;
    }
    1. Salut
      Pour simplifier pensez a utiliser deux boucles imbriques :

      for (i=0;i<nombres de lignes ;i++)
      for(j=0; j < i ; j++)
      printf("*");
    2. Modérateur
      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 :-/