Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Boss3120 en 17 Septiembre 2014, 02:22 am



Título: Duda C (While)Asteriscos
Publicado por: Boss3120 en 17 Septiembre 2014, 02:22 am
Buenas noches.
Necesito generar un programa con while que de como resultado una figura similar a la siguiente:
*                *
**             **
***          ***
****      ****
*****   *****
************
*****   *****
****       ****
***          ***
**              **
*                 *

Ya logre generar la primera mitad del triangulo con el siguiente codigo;
Código
  1. int main(int argc, char *argv[]) {
  2. int a=1,b=1;
  3. while(a<=10){
  4. b=1;
  5. while(b<=a){
  6.             printf("*");
  7.             b++;
  8.             }
  9.  
  10.             a++;
  11.              printf("\n");
  12.             }
  13. while(a>=1){
  14. b=1;
  15. while(b<=a){
  16.             printf("*");
  17.             b++;
  18.             }
  19.  
  20.             a--;
  21.              printf("\n");
  22.             }    
  23. system("PAUSE");
  24. return 0;
  25.  

Pero por mas que intento no puedo generar la mitad derecha, alguien me podría ayudar a darme una idea o alguna pista de que tengo que hacer para generar la mitad derecha?, gracias.


Título: Re: Duda C (While)Asteriscos
Publicado por: engel lex en 17 Septiembre 2014, 03:09 am
recuerda usar las etiquetas GeShi para la publicación de código


si lo quieres hacer exclusivamente con whiles porque es una tarea o algo así

tienes que hacer 2 partes de 3 secciones

la primera parte es la mitad de arriba

la primera sección imprime los asteriscos
Código
  1. b=1;
  2. while(b<=a){
  3.    printf("*");
  4.    b++;
  5. }


la segunda sección imprime los espacios reiniciando tu contador (b) y la cantidad de espacios es igual al largo -2 por linea (cada linea tiene 2 asteriscos extras)
Código
  1. b=1;
  2. while(b<=10-(a*2)){
  3.    printf(" ");
  4.    b++;
  5. }


la tercera sección imprime la misma cantidad de asteriscos (repito la primera sección)
Código
  1. b=1;
  2. while(b<=a){
  3.    printf("*");
  4.    b++;
  5. }


luego te toca repetir esto en la segunda parte pero al contrario (la mitad de abajo)

espero te sirva, si tienes dudas pregunta


Título: Re: Duda C (While)Asteriscos
Publicado por: Blaster en 17 Septiembre 2014, 03:49 am
Pero por mas que intento no puedo generar la mitad derecha, alguien me podría ayudar a darme una idea o alguna pista de que tengo que hacer para generar la mitad derecha?

Puedes generar la figura completa de la siguiente manera :

Código
  1. int i = -5, j = 0;
  2.  
  3. while(i <= 5)
  4. {
  5.     j = -5;
  6.     while( j <= 5)
  7.    {
  8.         printf("%c", abs(i) <= abs(j) ? '*' : ' ');
  9.         j++;
  10.    }
  11.     putchar('\n');
  12.     i++;
  13. }

Usando la función abs con la cual vamos dibujando las dos figuras juntas al mismo tiempo..

Un Saludo