Duda C (While)Asteriscos

Iniciado por Boss3120, 17 Septiembre 2014, 02:22 AM

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

Boss3120

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.

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Blaster

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