[C] Ayuda Pirame-Arbol con *

Iniciado por n-utz, 2 Junio 2016, 23:26 PM

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

n-utz

Buenas tardes, hoy les pido ayuda con un programa que no logro entender la logica.
No pido que solo me muestren el codigo bien hecho, porque lo busque en internet y no puedo entender la logica de los for, sino que también me ayuden a entenderlo con comentarios en el programa.

Les paso mi programa:


#include <stdio.h>
#include <stdlib.h>

int main()
{
   int i=0,j=0,g=0;
   for(i=0;i<=8;i++)
   {
       for (j=8;j>=i;j--)
       {
           printf(" ");
       }
       for (g=1;g<=(2*i)-1;g++)
       {
           printf("*");
       }
       printf("\n");
   }
   return 0;
}


Este programa imprime medio arbol de navidad, lo que busco es que imprima uno completo en el centro de la consola.
¿Alguno me ayuda?

Mi objetivo principal es lograr entender como con un for puedo poner un * en medio de la consola. Si se puede hacer sin un printf(" "); (vacio) mucho mejor.

Y no busco utilizacion de funciones o procedimientos, solo en el cuerpo principal.

Muchas gracias!


Aca logre separarlo de la pared de la consola, pero con un printf vacio. Lo que no logro hacer es completarlo del otro lado, me queda medio arbol.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i=0,j=0, x=0;

    for(i=1;i<18;i++){
        for(x=18;x>=i;x--){
            printf(" ");
        }
        for(j=1;j<i;j++){
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

class_OpenGL

#1
No es un printf "vacío". Lo que hace ese printf es imprimir un espacio. Es como si pusieras putc(' '). Ahí hay un espacio. En ANSI C no puedes moverte por la consola con un sistema de coordenadas. Como mucho, puedes hacer lo que se hace en el código, y es imprimir línea a línea el arbol

El árbol es el siguiente:
       
       *
      ***
     *****
    *******
    *********
   ***********
  *************


Como ves, antes de los asteriscos que forman el árbol hay espacios.

Para la primera línea, se imprimen 9 espacios, para la segunda 8, para la tercera 7... y para la última, 0 espacios. Eso es lo que hace el primer for. El segundo for imprime los asteriscos.

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

n-utz

Cita de: class_OpenGL en  2 Junio 2016, 23:49 PM
No es un printf "vacío". Lo que hace ese printf es imprimir un espacio. Es como si pusieras putc(' '). Ahí hay un espacio. En ANSI C no puedes moverte por la consola con un sistema de coordenadas. Como mucho, puedes hacer lo que se hace en el código, y es imprimir línea a línea el arbol

El árbol es el siguiente:
       
       *
      ***
     *****
    *******
    *********
   ***********
  *************


Como ves, antes de los asteriscos que forman el árbol hay espacios.

Para la primera línea, se imprimen 9 espacios, para la segunda 8, para la tercera 7... y para la última, 0 espacios. Eso es lo que hace el primer for. El segundo for imprime los asteriscos.

Sip, sabia que el printf vacio hacia el espacio, queria una solucion sin eso. Pense que con un for me podia parar en el medio de la consola. ¿La unica forma es esa?

engel lex

si, a menos que uses librerías adicionales (ncurses) o técnicas especiales (ANSI scape codes) no hay mas forma que colocar espacios
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.