Hola, buenas tardes,
Tengo que realizar el síguete ejercicio y no me acaba de salir: Crea un programa que permita leer un numero natural N y que dibuje una pirámide de asteriscos con base y altura N. Pr ejemplo, si N=5, debería de dibujar:
*
**
***
****
*****
Os dejo el código que llevo hasta ahora (la pirámide me la imprime pero no la "rellena" de asteriscos):
#include <stdio.h>
#include <stdlib.h>
int main()
{
int altura,j,k;
printf("Altura: \n");
scanf("%d",&altura);
printf("\n");
if(altura>0)
{
for (k=1;k<=altura-1;k++)
printf(" ");
printf("*");
printf("\n");
}
for (k=2;k<=altura-1;k++)
{
for (j=1;j<=altura-k;j++)
printf(" ");
printf("*");
for(j=1;j<=2*k-3;j++)
printf(" ");
printf("*");
printf("\n");
}
if (altura>1)
{
printf("*");
for (k=1;k<=altura-1;k++)
{
printf(" ");
printf("*");
}
printf("\n");
}
system("PAUSE");
return 0;
}
Espero que me podáis ayudar.
Un saludo :-*
En este enlace (http://foro.elhacker.net/programacion_cc/c_rombo_con_asteriscos-t409663.0.html)tienes multitud de opciones. Aunque son para rombos, en tu caso es más sencillo, sólo tomas la mitad.¡¡¡¡ Saluditos! ..... !!!!
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
EDITO:
En tu caso, para no variar mucho lo que tienes, te vale:
..................
scanf ...............
for (k=1;k<=altura;k++)
{
for (j=1;j<=altura-k;j++)
printf(" ");
for(j=1;j<=2*k-1;j++)
if (j%2==0)
printf(" ");
else
printf("*");
printf("\n");
}
system("PAUSE");
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* * * * * * * * * *
Hola leosansan,
Gracias por tu ayuda :)
Ahora el segundo apartado del ejercicio me dice que pase ese mismo programa a funciones. Lo he intentado pero no me acaba de salir, dejo el código que llevo hecho hasta ahora:
#include <stdio.h>
#include <stdlib.h>
void piramide(int altura);
int main()
{
int alt;
printf("Altura: \n");
scanf("%d",&alt);
piramide(altura);
system("PAUSE");
return 0;
}
void piramide(int altura)
{
int k,j;
for (k=1;k<=altura;k++)
{
for (j=1;j<=altura-k;j++)
printf(" ");
for(j=1;j<=2*k-1;j++)
if (j%2==0)
printf(" ");
else
printf("*");
printf("\n");
}
}
No se que es lo que me falla porque aparentemente, lo veo bien :S
Gracias nuevamente por vuestra ayuda :-*
Bueno supongo que sera el error del main, tienes una variable alt y intentas pasar una variable llamada altura....
int main()
{
int alt;
printf("Altura: \n");
scanf("%d",&alt);
piramide(alt);
system("PAUSE");
return 0;
}
Saludos
¡Ostras! Vaya error más tonto.
Muchas gracias noele1995 por tu ayuda.
Un saludo :-*