Test Foro de elhacker.net SMF 2.1

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;

int main(int argc, char *argv[]) {
int a=1,b=1;
while(a<=10){
b=1;
while(b<=a){
            printf("*");
            b++;
            }
           
            a++;
             printf("\n");
            }
while(a>=1){
b=1;
while(b<=a){
            printf("*");
            b++;
            }
           
            a--;
             printf("\n");
            }    
system("PAUSE");
return 0;


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 (cpp) [Seleccionar]
b=1;
while(b<=a){
    printf("*");
    b++;
}


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 (cpp) [Seleccionar]
b=1;
while(b<=10-(a*2)){
    printf(" ");
    b++;
}


la tercera sección imprime la misma cantidad de asteriscos (repito la primera sección)
Código (cpp) [Seleccionar]
b=1;
while(b<=a){
    printf("*");
    b++;
}


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
Cita de: Boss3120 en 17 Septiembre 2014, 02:22 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 (cpp) [Seleccionar]
int i = -5, j = 0;

while(i <= 5)
{
     j = -5;
     while( j <= 5)
    {
         printf("%c", abs(i) <= abs(j) ? '*' : ' ');
         j++;
    }
     putchar('\n');
     i++;
}


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

Un Saludo