martes, 26 de abril de 2011

Impresión de matriz gráfica en modo caracter (lenguaje C)


El siguiente código sirve para darle una presentacion mas vistosa a los datos de una matriz dibujando el contorno con lineas dobles, por lo cual se puede dibujar la matriz de la cantidad de filas y columnas que se desee cambiando unicamente las variables globales F y C respectivamente.  para dibujar dicha matriz se ha separado el dibujo en tres partes:

si copias todo el codigo que aparece despues de la imagen de como queda la matriz tu programa correra sin problemas, la siguiente imagen muestra como se veria una matriz de 3 x 3


//primero puedes declarar estas variables globales para el tamaño de la matriz
//f servira para las filas y c para las columnas
int f,c; 

//1) dibujar la parte de arriba de la matriz:
 //esta funcion dibuja la parte de arriba de la matriz dependiendo la
//cantidad de columnas que tenga.
void dibujarArriba()
{
    int j;
    for(j=0;j<c;j++)   // c es la cantidad de columnas de la matriz
    {
      //si es la posicion 0 es porque es la esquina superior izquierda
      if(j==0)
      {
          printf("%c",201);
          printf("%c%c%c%c",205,205,205,205);
      }
      else
      {
          //si es la ultima posicion es porque es la equina superior derecha
          if(j==c-1)
          {
            printf("%c%c%c%c%c",203,205,205,205,205);
            printf("%c",187);
          }
          //si no es ni la primera ni la ultima posicion es el caracter diferente a las esquinas superiores
          else
          {
            printf("%c",203);
            printf("%c%c%c%c",205,205,205,205);
          }
      }
    }
    printf("\n");  //al terminar la parte de arriba hay que hacer salto de linea   
}
//2) dibujar la parte del medio de la matriz, es decir todas las filas de dicha matriz:
//esta funcion dibuja la parte del medio de la matriz, es decir la cantidad de filas
//que tiene  dicha matriz
void dibujarMedio()
{
  int i,j;
  for(i=1;i<f;i++)
  {  
      for(j=0;j<c;j++)
      {
        //si es la columna 0
        if(j==0)
        {
            printf("%c",204);
            printf("%c%c%c%c",205,205,205,205);
        }
        else
        {  
            //si es la ultima columna
            if(j==c-1)
            {
              printf("%c%c%c%c%c",206,205,205,205,205);
              printf("%c",185);
            }
            //si no es ni la primera ni la ultima columna
            else
            {
              printf("%c",206);
              printf("%c%c%c%c",205,205,205,205);
            }
        }
      }
      printf("\n"); //cada fila dibujada hay que hacer salto de linea
  }
}

//3) dibujar la parte de abajo de la matriz
//esta funcion dibuja la parte de abajo de la matriz dependiendo la
//cantidad columnas que tenga.
int dibujarAbajo()
{
    int j;
    for(j=0;j<c;j++)
    {
      //si es la columna 0 es la esquina inferior izquierda
      if(j==0)
      {
          printf("%c",200);
          printf("%c%c%c%c",205,205,205,205);
      }
      else
      {
          //si es la ultima columna es la esquina inferior derecha
          if(j==c-1)
          {
            printf("%c%c%c%c%c",202,205,205,205,205);
            printf("%c",188);
          }
          //si no es ni la primera ni la ultima posicion es el caracter diferente a las esquinas inferiores
          else
          {
            printf("%c",202);
            printf("%c%c%c%c",205,205,205,205);
          }
      }
    }
}

//y por ultimo puedes poner estos el siguiente procedimiento junto con la funcion main para que corra tu programa:

//funcion encargada aramar la matriz para ello la subdivide en 3 funciones mas
//una para dibujar la parte de arriba, otra para la parte del medio y
//la ultima para la parte de abajo
void dibujarMatriz()
{
    dibujarArriba();   //dibuja la parte de arriba de la matriz
    dibujarMedio(); //dibuja la parte media es decir todas las filas de la matriz
    dibujarAbajo();    //dibuja la parte de abajo de la matriz
}

//aqui hacemos la llamada a la funcion dibujarMatriz
int main()
{
    f=8; //cantidad de filas de la matriz si se quiere otro tamaño basta con cambiarlo aqui
    c=8;  //cantidad de columnas de la matriz si se quiere otro tamaño basta con cambiarlo aqui
    system("cls");  //limpiar pantalla
    dibujarMatriz();  //funcion que se encargara de armar la matriz
    getch();
}

1 comentario:

  1. Lo probé y me imprime los simbolitos de cuando el compilador no reconoce el caracter...

    ResponderEliminar