Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/04/2010, 20:02
aguirremanuel
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Dibujar Cuadros con texto en C

Aquí te paso otro ejemplo donde el cuadro se ajusta dependiendo del largo de los nombres y los apellidos introducidos :

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define NUM_PERSONAS 3
  5.  
  6. typedef struct Persona  //estructura con los nombres y los apellidos
  7. {
  8.     char nombre[20];
  9.     char apellido[20];
  10. }PERSONA;
  11.  
  12. int main()
  13. {
  14.     PERSONA persona[NUM_PERSONAS];
  15.     int x;
  16.     int LargoNombre = 6; //largo de la palabra NOMBRE
  17.     int LargoApellido = 8; //largo de la palabra APELLIDO
  18.  
  19.     printf("Ingrese 3 nombres y apellidos de personas\n");
  20.     for (x = 0 ; x < NUM_PERSONAS ; x++ )
  21.     {
  22.         printf("\n%der Nombre   : ",x+1); scanf(" %s",persona[x].nombre);
  23.         printf("%der Apellido : ",x+1); scanf(" %s",persona[x].apellido);
  24.     }
  25.     //calculo el nombre mas largo
  26.     for (x = 0 ; x < NUM_PERSONAS ; x++ )
  27.         if ( LargoNombre < strlen(persona[x].nombre))
  28.             LargoNombre = strlen(persona[x].nombre);
  29.     //calculo el apellido mas largo
  30.     for (x = 0 ; x < NUM_PERSONAS ; x++ )
  31.         if ( LargoApellido < strlen(persona[x].apellido))
  32.             LargoApellido = strlen(persona[x].apellido);
  33.  
  34.     //IMPRIMO LOS DATOS
  35.     printf("\n\nIMPRIMIENDO DATOS :\n");
  36.  
  37.     //el printf de abajo va hacer una linea del tamaño adecuado para mostrar los datos
  38.     printf("%.*s",LargoApellido+LargoNombre+11,"----------------------------------------");
  39.     printf("\n|  %-*s  |  %-*s  |\n",LargoNombre,"NOMBRE",LargoApellido,"APELLIDO");
  40.     printf("%.*s",LargoApellido+LargoNombre+11,"----------------------------------------");
  41.     for (x = 0 ; x < NUM_PERSONAS ; x++ )
  42.     {
  43.         printf("\n|  %-*s  |  %-*s  |",LargoNombre,persona[x].nombre,LargoApellido,persona[x].apellido);
  44.         printf("\n%.*s",LargoApellido+LargoNombre+11,"----------------------------------------");
  45.     }
  46.     printf("\n\n");
  47.     return 0;
  48. }

Espero te sirva mi pana...