Bucles

Ejemplos de programas utilizando las estructuras repetitivas

En general se utilizan los bucles for cuando conocemos de antemano la cantidad de veces que vamos a iterar. Si queremos repetir una porción de código basados en una condición (distinta de un número de veces) deberíamos utilizar las sentencias while y do-while

De las estructuras de selección no voy a dedicar ejemplos específicos, estan incluidos en los códigos acontinuación.

Imprimir el triángulo de Pascal

El Triángulo de Pascal es un triángulo de números enteros, infinito y simétrico. Se empieza con un 1 en la primera fila, y en las filas siguientes se van colocando números de forma que cada uno de ellos sea la suma de los dos números que tiene encima. Se supone que los lugares fuera del triángulo contienen ceros, de forma que los bordes del triángulo están formados por unos. Aquí sólo se ve una parte; el triángulo continúa por debajo y es infinito.

#include <stdio.h>
int main()
{
  int filas, coeficiente = 1, espacio, i, j;

  printf("Ingrese el número de filas: ");
  scanf("%d",&filas);

  /*Iteramos para cada fila*/
  for(i=0; i< filas; i++)
  {
  /*Necesito dejar filas-1 espacios antes de 
   *imprimir el primer número de la fila correspondiente
   */
      for(espacio = 1; espacio <= filas-i; espacio++)
          printf("  ");   /*Imprimo un espacio*/
  /*Iteramos las columnas
   *Sabemos que la cantidad de elementos a imprimir en la fila i
   *es de  
   */
      for(j=0; j <= i; j++)
      {   /*Si estoy en los bordes imrpimo un "1"
           *si no, calculo el valor del coeficiente a imprimir
           */
          if (j==0 || i==0)
              coeficiente = 1;
          else
              coeficiente = coeficiente*(i-j+1)/j;
          printf("%4d", coeficiente);
      }
      printf("\n");
  }
  return 0;
}
              
Ingrese el número de filas: 5
             1
           1   1
         1   2   1
       1   3   3   1
     1   4   6   4   1
              

Imprimir una pirámide completa usando números

#include <stdio.h>
int main()
{
  int i, espacio, filas, k=0, contadorIzquierdo = 0, contadorDerecho = 0;

  printf("Ingrese el número de filas: ");
  scanf("%d",&filas);

/*Vamos a iterar a lo largo de las filas */
  for(i=1; i <= filas; ++i)
  {
	/*Necesito dejar "filas-1" espacios antes de 
	 *imprimir el primer número de la fila correspondiente
	 */
    for(espacio = 1; espacio <= filas-i; ++espacio)
      { printf("  ");		/*Imprimo dos espacios*/
        ++contadorIzquierdo;
      }
	/*Mientras tengamos números para imprimir*/
      while(k != 2*i-1)
      	{ if (contadorIzquierdo <= filas-1) /*Imprimo a la izquierda?*/
      	    { printf("%d ", i+k);
      	      ++contadorIzquierdo;
      	    }
      	    else
      	    { ++contadorDerecho;
      	      printf("%d ", (i+k-2*contadorDerecho));
      	    }
      	    ++k;
      	}
/*terminé con esta fila, reinicio los contadores y repito para la siquiente fila*/
      contadorDerecho = contadorIzquierdo = k = 0;
      printf("\n");
  }
  return 0;
}
              
Ingrese le número de filas: 5
        1 
      2 3 2 
    3 4 5 4 3 
  4 5 6 7 6 5 4 
5 6 7 8 9 8 7 6 5