Con el último ejemplo que pones es verdad que el algoritmo no funciona. (No me había fijado en el número de elemento sino solamente en los ejemplos).
Supongo que para n = 5 entonces
*
**
*
***
*
**
*
****
*
**
*
***
*
**
*
*****
*
**
*
***
*
**
*
****
*
**
*
***
*
**
*
Si te das cuenta hay unos patrones que se repiten:
para ** antes y después
*
para *** antes y después
*
**
*
y así sucesivamente.
por lo que se deduce que tiene que ser una función recursiva para ir repitiendo los patrones para cada nivel:
funcion recursiva(cont)
{
si (cont == 1)
{
escribir("*n");
}
sino
{
recursiva(cont -1);
para i=1 hasta cont avance +1 escribir("*");
escribir("n");
recursiva(cont -1);
}
}
int main ()
{
leer(n);
recursiva(n);
}