• Domingo 15 de Diciembre de 2024, 03:02

Autor Tema:  No acabo de comprender la logica de este programa  (Leído 1109 veces)

Cosmos009

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
No acabo de comprender la logica de este programa
« en: Domingo 25 de Julio de 2010, 12:06 »
0
Buenas a todos, estoy estudiando C y haciendo algunos programas basicos, ahora me encuentro en las sentencias de control y realizando un programa que imprime en el centro de la pantalla una pirámide, con un numero de filas entre 11 y 20 a introducir por el teclado.Aún sabiendo leerlo no comprendo la forma en la  que funciona el programa, la lógica de las sentencias que lo componen.
Gracias a todos.

#include <stdio.h>
       
#define COLUMNAS 80  

main()
{                        
  int a = 0, b = 1, c;
  int FILAS;

  do
  {
    printf("Número de filas entre 11 y 20: ");
    scanf("%d", &FILAS);
  }
  while (FILAS < 11 || FILAS > 20);

  for (c = 1; c < FILAS; c++)
  {
    int despl, d;
    printf("n");
    for (despl = COLUMNAS/4 - b; despl >= 0; despl--)
      printf("  ");
    for(d = 1; d <= b; d++)
    {
      a++;
      if(a > 9) a = 0;
      printf("%d ", a);
    }
    for(d = 1; d < b; d++)
    {
      a--;
      if(a < 0) a = 9;
      printf("%d ", a);
    }
    b++;
  }
}

vite666

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: No acabo de comprender la logica de este programa
« Respuesta #1 en: Sábado 31 de Julio de 2010, 05:48 »
0
pues mira lo que hace basicamente es:
el primer for creo que es entendible solo marca el numero columnas que vas a pintar
el segundo for envia el cursor en una cuarta parte de la pantalla, sabras que la pantalla se divide en 80 en "x" y 25 en "y" asi con esto te envia a la posicion 80/4-1=19 ya que COLUMNAS =80 y b=1 asi que pinta espacios para que en pantalla no se vea nada para poder llegar a esta posicion  y como se incrementa a b la segunda ves valdra 18, para que cuando empiece a pintar empiece uno atras.
el tercer for pinta "la mitad del triangulo" la primera vez solo pinta un uno con un espacio.
El segundo for pinta "la otra mitad del triangulo" esto se empieza a notar en el segundo renglon, donde el primer for pinta 2 3 y el segundo for pinta 2, asi puede visualizarse 2 3 2, y asi sucesibamente, el primer for pinta 2 3 4 y el segundo 3 2 para verse 2 3 4 3 2.
Espero entiendas. Saludos.

Cosmos009

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: No acabo de comprender la logica de este programa
« Respuesta #2 en: Sábado 31 de Julio de 2010, 14:31 »
0
Muchas Gracias vite666, ahora mismo estaba desconponiendo el problema en subproblemas con una piramide mas básica y he empezado a entenderlo, aunque cuando he leido tu respuesta, examinando el código si he podido ver la lógica de sus iteraciones.Ahora ya entiendo, en cada iteración lo que va haciendo en cada línea.
Muy buena explicación lo he comprendido perféctamente, te estoy muy agradecido.
xD