/****************************************************************************
PROGRAMA:	tipos2
AUTOR:		Kiko
FECHA:		12.07.94
FINALIDAD:	Ilustraci˘n de tipos de datos estructurados.
HISTORIA:
BIBLIOGRAFIA:
MODO DE UTILIZACION: Sin requerimientos especiales.
****************************************************************************/


/* Ficheros de cabeceras de funciones de librerˇa */
#include <stdio.h>      /* Para el printf */
#include <conio.h>	/* Para el clrscr */
#include <string.h>	/* Para el strcpy */

#define N 2
#define M 3

int vector[N];				/* Un array de N enteros */
static char mensaje[] = "­Hola!";	/* Mensaje est tico */
float x[5] = {0, 1.0, 2.0, 3.0, 4.0};   /* Vector de reales */
char colores[3] = {'R', 'G', 'B'};	/* Caracteres */
int matriz[N][M];			/* Array bidimensional */


/* Definiciones de estructuras */
struct fecha {
	int mes;
	int dia;
	int anio;
};

struct alumnos {
	char nombre[20];
	char apellido1[20];
	char apellido2[20];
	unsigned long int dni;
	int curso;
} alu1, alu2, alu3;

struct lista {
	char elemento[10];		/* Elemento de la lista */
	struct lista *sig;		/* Puntero al siguiente nodo */
};

/* Variables estructuradas */
struct fecha f;
struct alumnos alu4, alu5, alu6;
struct lista L;

/*
alu1, alu1, alu3, alu4, alu5 y alu6 son todas variables estructuradas del
tipo alumnos. N˘tese las distintas formas de declarar estas variables.
*/

/* Enumeraci˘n para definir el tipo boolean */
typedef enum {FALSE = 0, TRUE = 1} boolean;

void main()
{
int i;

clrscr();
for (i = 0; i < N; i++)
	vector[i] = i;

/* Acceso a los campos de una estructura */
f.dia = 12;
f.mes = 7;
f.anio = 1994;

strcpy(alu1.nombre, "Miguel");
strcpy(alu1.apellido1, "Cervantes");
strcpy(alu1.apellido2, "Saavedra");
alu1.dni = 123456;

printf("Nombre: %s %s %s\n", alu1.nombre, alu1.apellido1, alu1.apellido2);
printf("D.N.I.: %ld\n", alu1.dni);
}

