Ejercicio 06 — Mostrar un triangulo de asteriscos de altura N

Dificultad: rojo · Módulo 03 (Bucles)

Enunciado

Mostrar un triangulo de asteriscos de altura N (leida por teclado).

Diagrama de flujo

Diagrama de flujo del ejercicio 06

Cómo se resuelve

Aquí aparece la gran idea de este módulo: los bucles anidados, un bucle dentro de otro. Para dibujar un triángulo de asteriscos, un solo bucle no basta, porque tenemos que manejar dos cosas a la vez: cuántas filas hay y cuántos asteriscos lleva cada fila.

  1. El bucle externo (fila de 1 a n) controla las filas: da una vuelta por cada línea del triángulo.
  2. Dentro de él, el bucle interno (col de 1 a fila) imprime los asteriscos de esa fila. La clave es que su límite es fila, no n: en la fila 1 imprime 1 asterisco, en la fila 2 imprime 2, y así el triángulo crece. Cada printf("*") va sin salto de línea, para que los asteriscos queden pegados en horizontal.
  3. Al terminar el bucle interno, pero todavía dentro del externo, un printf("\n") cierra la fila y baja a la siguiente.

La trampa típica de los anidados es la colocación del salto de línea. Si pones el printf("\n") dentro del bucle interno, cada asterisco cae en una línea distinta y no se forma el triángulo; si lo pones fuera del bucle externo, todos los asteriscos salen en una única fila. El \n tiene que ir justo entre los dos bucles: después de cerrar el interno y antes de la siguiente vuelta del externo. Piensa siempre en el anidado como “el externo cuenta filas, el interno cuenta columnas”.

Para practicar — cópialo en Dev-C++

Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.

/*
 * Curso de C — Modulo 03: Bucles
 * Ejercicio 06 — PRACTICA (rellena los TODO)
 * Enunciado: Mostrar un triangulo de asteriscos de altura N (leida por teclado).
 * Dificultad: rojo
 * Compilar: gcc -std=c11 -Wall ej06_practica.c -o ej06 && ./ej06
 *
 * Salida esperada para N=4:
 *   *
 *   **
 *   ***
 *   ****
 */
 
#include <stdio.h>
 
int main(void) {
    int n;
 
    // TODO 1: Pide la altura N al usuario y leela
 
    // TODO 2: Bucle EXTERNO: variable 'fila' de 1 a n
    //         Cada iteracion representa una fila del triangulo
 
    //   TODO 3: Bucle INTERNO: variable 'col' de 1 a fila
    //           (la fila 1 tiene 1 asterisco, la fila 2 tiene 2, etc.)
    //           Imprime un '*' sin salto de linea: printf("*");
 
    //   TODO 4: Despues del bucle interno (pero dentro del externo),
    //           imprime un salto de linea: printf("\n");
 
    return 0;
}

Solución — cópiala y ejecútala

/*
 * Curso de C — Modulo 03: Bucles
 * Ejercicio 06 — MODELO (resuelto)
 * Enunciado: Mostrar un triangulo de asteriscos de altura N (leida por teclado).
 * Dificultad: rojo
 * Compilar: gcc -std=c11 -Wall ej06_modelo.c -o ej06 && ./ej06
 *
 * Salida esperada para N=4:
 *   *
 *   **
 *   ***
 *   ****
 */
 
#include <stdio.h>
 
int main(void) {
    int n;
    printf("Altura del triangulo: ");
    scanf("%d", &n);
 
    if (n <= 0) {
        printf("La altura debe ser un numero positivo.\n");
        return 1;
    }
 
    // Bucle externo: cada iteracion es una fila
    for (int fila = 1; fila <= n; fila++) {
        // Bucle interno: imprime 'fila' asteriscos en la fila actual
        for (int col = 1; col <= fila; col++) {
            printf("*");
        }
        printf("\n");   // salto de linea al terminar la fila
    }
 
    return 0;
}

Cómo usarlo

Dev-C++ (Windows): Archivo → Nuevo → Código fuente, pega el código y pulsa F11 (compilar y ejecutar). Si ves los acentos raros en la consola, escribe chcp 65001 y vuelve a ejecutar.

Conexiones