Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: yuna88 en 11 Abril 2014, 14:53 pm



Título: Piramide de asteriscos
Publicado por: yuna88 en 11 Abril 2014, 14:53 pm
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):

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6. int altura,j,k;
  7.  
  8. printf("Altura: \n");
  9. scanf("%d",&altura);
  10. printf("\n");
  11.  
  12. if(altura>0)
  13. {
  14. for (k=1;k<=altura-1;k++)
  15.    printf(" ");
  16. printf("*");
  17. printf("\n");
  18. }
  19.  
  20. for (k=2;k<=altura-1;k++)
  21. {
  22. for (j=1;j<=altura-k;j++)
  23. printf(" ");
  24. printf("*");
  25.  
  26. for(j=1;j<=2*k-3;j++)
  27. printf(" ");
  28. printf("*");
  29. printf("\n");
  30. }
  31.  
  32. if (altura>1)
  33. {
  34. printf("*");
  35. for (k=1;k<=altura-1;k++)
  36. {
  37. printf(" ");
  38. printf("*");
  39. }
  40. printf("\n");
  41. }
  42.  
  43. system("PAUSE");
  44. return 0;
  45. }

Espero que me podáis ayudar.

Un saludo  :-*


Título: Re: Piramide de asteriscos
Publicado por: leosansan en 11 Abril 2014, 15:47 pm
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:

Código
  1. ..................
  2. scanf ...............
  3. for (k=1;k<=altura;k++)
  4. {
  5.  for (j=1;j<=altura-k;j++)
  6.    printf(" ");
  7.  for(j=1;j<=2*k-1;j++)
  8.    if (j%2==0)
  9.      printf(" ");
  10.    else
  11.      printf("*");
  12.    printf("\n");
  13. }
  14. system("PAUSE");

Código
  1.         *
  2.        * *
  3.       * * *
  4.      * * * *
  5.     * * * * *
  6.    * * * * * *
  7.   * * * * * * *
  8.  * * * * * * * *
  9. * * * * * * * * *
  10. * * * * * * * * * *
  11.  


Título: Re: Piramide de asteriscos
Publicado por: yuna88 en 12 Abril 2014, 11:32 am
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:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void piramide(int altura);
  5.  
  6. int main()
  7. {
  8. int alt;
  9.  
  10. printf("Altura: \n");
  11. scanf("%d",&alt);
  12.  
  13. piramide(altura);
  14.  
  15. system("PAUSE");
  16. return 0;
  17. }
  18.  
  19. void piramide(int altura)
  20. {
  21. int k,j;
  22.  
  23. for (k=1;k<=altura;k++)
  24. {
  25. for (j=1;j<=altura-k;j++)
  26.   printf(" ");
  27. for(j=1;j<=2*k-1;j++)
  28.   if (j%2==0)
  29.     printf(" ");
  30.   else
  31.     printf("*");
  32.   printf("\n");
  33.   }
  34. }


No se que es lo que me falla porque aparentemente, lo veo bien :S

Gracias nuevamente por vuestra ayuda  :-*


Título: Re: Piramide de asteriscos
Publicado por: noele1995 en 12 Abril 2014, 13:10 pm
Bueno supongo que sera el error del main, tienes una variable alt y intentas pasar una variable llamada altura....

Código
  1. int main()
  2. {
  3.    int alt;
  4.  
  5.    printf("Altura: \n");
  6.    scanf("%d",&alt);
  7.  
  8.    piramide(alt);
  9.  
  10.    system("PAUSE");
  11.    return 0;
  12. }

Saludos


Título: Re: Piramide de asteriscos
Publicado por: yuna88 en 12 Abril 2014, 14:56 pm
¡Ostras! Vaya error más tonto.

Muchas gracias noele1995 por tu ayuda.

Un saludo  :-*