Piramide de asteriscos

Iniciado por yuna88, 11 Abril 2014, 14:53 PM

0 Miembros y 1 Visitante están viendo este tema.

yuna88

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  :-*

leosansan

#1
En este enlace tienes multitud de opciones. Aunque son para rombos, en tu caso es más sencillo, sólo tomas la mitad.

¡¡¡¡ Saluditos! ..... !!!!



EDITO: En tu caso, para no variar mucho lo que tienes, te vale:

Código (cpp) [Seleccionar]

..................
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");


Código (cpp) [Seleccionar]

        *
       * *
      * * *
     * * * *
    * * * * *
   * * * * * *
  * * * * * * *
 * * * * * * * *
* * * * * * * * *
* * * * * * * * * *

yuna88

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  :-*

noele1995

Bueno supongo que sera el error del main, tienes una variable alt y intentas pasar una variable llamada altura....

Código (cpp) [Seleccionar]
int main()
{
    int alt;

    printf("Altura: \n");
    scanf("%d",&alt);

    piramide(alt);

    system("PAUSE");
    return 0;
}


Saludos

yuna88

¡Ostras! Vaya error más tonto.

Muchas gracias noele1995 por tu ayuda.

Un saludo  :-*