Ejercicio 06 — Mostrar un triángulo de asteriscos de altura N
Dificultad: rojo · Módulo 03 (Bucles)
Enunciado
Mostrar un triángulo de asteriscos de altura N (leída por teclado).
Diagramas de flujo


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.
- El bucle externo (
filade 1 an) controla las filas: da una vuelta por cada línea del triángulo. - Dentro de él, el bucle interno (
colde 1 afila) imprime los asteriscos de esa fila. La clave es que su límite esfila, non: en la fila 1 imprime 1 asterisco, en la fila 2 imprime 2, y así el triángulo crece. Cadaprintf("*")va sin salto de línea, para que los asteriscos queden pegados en horizontal. - 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 y complétalo
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 triángulo de asteriscos de altura N (leída por teclado).
* Dificultad: rojo
* Stdin: 4
* 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 triángulo de asteriscos de altura N (leída por teclado).
* Dificultad: rojo
* Stdin: 4
* 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;
}Ejecútalo en el navegador
▶ Abrir y ejecutar en Compiler Explorer
Se abre con la solución ya cargada; pulsa el botón de ejecutar (Run) para ver la salida. No hay que instalar nada.
Cómo usarlo
Pega el código en un fichero y ejecútalo con tu toolchain habitual (o el botón de Ejecutar de tu editor). Antes de mirar la solución, intenta completar tú el esqueleto: es la mejor forma de aprender.