/*--------------------------------------------------------------------
 * FICHERO:  Vgen.c
 * OBJETIVO: Probar el fichero de definiciones generales
 * AUTOR:    Pedro Reina
 * FECHA:    S.8.7.1995
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------------
 * Ficheros de cabecera
 *------------------------------------------------------------------*/

#include "General.h"

/*--------------------------------------------------------------------
 * Definicin de macros constantes
 *------------------------------------------------------------------*/

   /* Ninguno */

/*--------------------------------------------------------------------
 * Definicin de variables globales
 *------------------------------------------------------------------*/

   /* Ninguna */

/*--------------------------------------------------------------------
 * Declaracin de funciones
 *------------------------------------------------------------------*/

void P_Logico();
void P_Octeto();
void P_Menudo();
void P_Contpos();
void P_Contador();
void P_Entero();
void P_Entpos();
void P_Abs();
void P_Min();
void P_Max();
void P_Signo();
void P_DivEx();

/*--------------------------------------------------------------------
 * Definicin de macros funciones
 *------------------------------------------------------------------*/

   /* Ninguno */

/*--------------------------------------------------------------------
 * Programa principal
 *------------------------------------------------------------------*/
void main()
  {
  int Opcion, Sigue=1;

  while ( Sigue )
    {
    printf ( "\n\n" );
    printf ( "\nPrueba del fichero General" );
    printf ( "\n==========================\n" );

    printf ( "\n0. Fin del programa" );
    printf ( "\n1. Tipo de datos logico" );
    printf ( "\n2. Tipo de datos octeto" );
    printf ( "\n3. Tipo de datos menudo" );
    printf ( "\n4. Tipo de datos contador" );
    printf ( "\n5. Tipo de datos contpos" );
    printf ( "\n6. Tipo de datos entero" );
    printf ( "\n7. Tipo de datos entpos" );
    printf ( "\n8. Abs()" );
    printf ( "\n9. Min()" );
    printf ( "\n10. Max()" );
    printf ( "\n11. Signo()" );
    printf ( "\n12. DivEx()" );

    printf ( "\n\nIntroduce nmero de opcin: " );
    scanf ( "%d", &Opcion );
    getchar();

    switch ( Opcion )
      {
      case 0:   Sigue = 0;       break;
      case 1:   P_Logico();      break;
      case 2:   P_Octeto();      break;
      case 3:   P_Menudo();      break;
      case 4:   P_Contador();    break;
      case 5:   P_Contpos();     break;
      case 6:   P_Entero();      break;
      case 7:   P_Entpos();      break;
      case 8:   P_Abs();         break;
      case 9:   P_Min();         break;
      case 10:  P_Max();         break;
      case 11:  P_Signo();       break;
      case 12:  P_DivEx();       break;
      }
    }
  }

/*--------------------------------------------------------------------
 * Funcin P_Logico()
 *------------------------------------------------------------------*/
void P_Logico()
  {
  printf ( "\n" );

  printf ( "\nPrueba del tipo logico" );
  printf ( "\n----------------------\n" );
  printf ( "\nValor NO: %d", NO );
  printf ( "\nValor SI: %d", SI );

  printf ( "\n\nPulsa ENTER para seguir: " );
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Contador()
 *------------------------------------------------------------------*/
void P_Contador()
  {
  contador n;

  printf ( "\n" );

  printf ( "\nPrueba del tipo contador" );
  printf ( "\n------------------------\n" );
  n = 32767;
  printf ( "\nBusco valor mximo: %d", n++ );
  printf ( " %d", n++ );
  printf ( " %d", n++ );
  printf ( " %d", n++ );
  n= -32767;
  printf ( "\nBusco valor mnimo: %d", n-- );
  printf ( " %d", n-- );
  printf ( " %d", n-- );
  printf ( " %d", n-- );

  printf ( "\n\nPulsa ENTER para seguir: " );
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Contpos()
 *------------------------------------------------------------------*/
void P_Contpos()
  {
  contpos n;

  printf ( "\n" );

  printf ( "\nPrueba del tipo contpos" );
  printf ( "\n-----------------------\n" );
  n = 65534;
  printf ( "\nBusco valor mximo: %u", n++ );
  printf ( " %u", n++ );
  printf ( " %u", n++ );
  printf ( " %u", n++ );
  n= 1;
  printf ( "\nBusco valor mnimo: %u", n-- );
  printf ( " %u", n-- );
  printf ( " %u", n-- );
  printf ( " %u", n-- );

  printf ( "\n\nPulsa ENTER para seguir: " );
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Entero()
 *------------------------------------------------------------------*/
void P_Entero()
  {
  entero n;

  printf ( "\n" );

  printf ( "\nPrueba del tipo entero" );
  printf ( "\n----------------------\n" );
  n = 2147483647;
  printf ( "\nBusco valor mximo: %ld", n++ );
  printf ( " %ld", n++ );
  printf ( " %ld", n++ );
  printf ( " %ld", n++ );
  n= -2147483647;
  printf ( "\nBusco valor mnimo: %ld", n-- );
  printf ( " %ld", n-- );
  printf ( " %ld", n-- );
  printf ( " %ld", n-- );

  printf ( "\n\nPulsa ENTER para seguir: " );
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Octeto()
 *------------------------------------------------------------------*/
void P_Octeto()
  {
  octeto n;

  printf ( "\n" );

  printf ( "\nPrueba del tipo octeto" );
  printf ( "\n----------------------\n" );
  n = 254;
  printf ( "\nBusco valor mximo: %d", n++ );
  printf ( " %d", n++ );
  printf ( " %d", n++ );
  printf ( " %d", n++ );
  printf ( "\nBusco valor mnimo: %d", n-- );
  printf ( " %d", n-- );
  printf ( " %d", n-- );
  printf ( " %d", n-- );
  n = 1;

  printf ( "\n\nPulsa ENTER para seguir: " );
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Menudo()
 *------------------------------------------------------------------*/
void P_Menudo()
  {
  menudo n;

  printf ( "\n" );

  printf ( "\nPrueba del tipo menudo" );
  printf ( "\n----------------------\n" );
  n = 126;
  printf ( "\nBusco valor mximo: %d", n++ );
  printf ( " %d", n++ );
  printf ( " %d", n++ );
  printf ( " %d", n++ );
  n = -126;
  printf ( "\nBusco valor mnimo: %d", n-- );
  printf ( " %d", n-- );
  printf ( " %d", n-- );
  printf ( " %d", n-- );

  printf ( "\n\nPulsa ENTER para seguir: " );
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Entpos()
 *------------------------------------------------------------------*/
void P_Entpos()
  {
  entpos n;

  printf ( "\n" );

  printf ( "\nPrueba del tipo entpos" );
  printf ( "\n----------------------\n" );
  n = 4294967295;
  printf ( "\nBusco valor mximo: %lu", n++ );
  printf ( " %lu", n++ );
  printf ( " %lu", n++ );
  printf ( " %lu", n++ );
  n= 1;
  printf ( "\nBusco valor mnimo: %lu", n-- );
  printf ( " %lu", n-- );
  printf ( " %lu", n-- );
  printf ( " %lu", n-- );

  printf ( "\n\nPulsa ENTER para seguir: " );
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Abs()
 *------------------------------------------------------------------*/
void P_Abs()
  {
  printf ( "\n" );

  printf ( "\nPrueba de Abs()" );
  printf ( "\n---------------\n" );
  printf ( "\nValor absoluto de %d es: %d", 34, Abs(34) );
  printf ( "\nValor absoluto de %d es: %d", -5, Abs(-5) );
  printf ( "\nValor absoluto de %f es: %f", 1.2, Abs(1.2) );
  printf ( "\nValor absoluto de %f es: %f", -4.5, Abs(-4.5) );

  printf ( "\n\nPulsa ENTER para seguir: " );
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Max()
 *------------------------------------------------------------------*/
void P_Max()
  {
  printf ( "\n" );

  printf ( "\nPrueba de Max()" );
  printf ( "\n---------------\n" );
  printf ( "\nMximo de %d y de %d es: %d", 34, -3, Max(34,-3) );
  printf ( "\nMximo de %d y de %d es: %d", -8, -1, Max(-8,-1) );

  printf ( "\n\nPulsa ENTER para seguir: " );
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Min()
 *------------------------------------------------------------------*/
void P_Min()
  {
  printf ( "\n" );

  printf ( "\nPrueba de Min()" );
  printf ( "\n---------------\n" );
  printf ( "\nMnimo de %d y de %d es: %d", 34, -3, Min(34,-3) );
  printf ( "\nMnimo de %d y de %d es: %d", -8, -1, Min(-8,-1) );

  printf ( "\n\nPulsa ENTER para seguir: " );
  getchar();
  }
  
/*--------------------------------------------------------------------
 * Funcin P_Signo()
 *------------------------------------------------------------------*/
void P_Signo()
  {
  printf ( "\n" );

  printf ( "\nPrueba de Signo()" );
  printf ( "\n-----------------\n" );
  printf ( "\nSigno de %d es: %d", 34, Signo (34) );
  printf ( "\nSigno de %d es: %d", -3, Signo (-3) );
  printf ( "\nSigno de %d es: %d", 0, Signo (0) );
  printf ( "\nSigno de %f es: %d", 1.2, Signo (1.2) );
  printf ( "\nSigno de %f es: %d", 0.0, Signo (0.0) );
  printf ( "\nSigno de %f es: %d", -21.2, Signo (-21.2) );

  printf ( "\n\nPulsa ENTER para seguir: " );
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_DivEx()
 *------------------------------------------------------------------*/
void P_DivEx()
  {
  printf ( "\n" );

  printf ( "\nPrueba de DivEx()" );
  printf ( "\n-----------------\n" );
  printf ( "\nLa divisin por exceso de %d y %d es: %d", 8, 5, DivEx(8,5) );
  printf ( "\nLa divisin por exceso de %d y %d es: %d", 7, 7, DivEx(7,7) );

  printf ( "\n\nPulsa ENTER para seguir: " );
  getchar();
  }
  