MALLOC.c



// SIMULADOR DE UNA TABLA DE SIMBOLOS
//-------------------------------------------------------------------------
// Manera de ejecutarse:
//     capacidad de almacenar un caracter y mostrarA segUn se proceda su
//     comportamiento de lleno o vacIo.
//
// 1.- Teclear algo
//	a) si es una sola letra ("a"-"w")
//		si existe en la tabla de sImbolos, muestra su contenido
//			en la parte inferior.
//		si no existe muestra la inexistencia de la misma.
//	b) si es una sola letra ("a"-"w") precedido por "-"
//		si existe la borra de la tabla de sImbolos incluyendo a
//			su contenido.
//		si no existe, muestra el error de inexistencia
//	c) si es una sola letra ("a"-"w") seguido por "=" y una cadena
//		si existe, lo modifica
//		si no existe la almacena
//	d) si es la palabra "mapa", nos mostrará el mapa de la memoria
//	e) si es la palabra "tabla", nos mostrarA la tabla de sImbolos
//	f) si es "z" termina el programa.
//	g) cualquier otro caso ERROR
//
//-------------------------------------------------------------------------
// NOMBRE	DIR	LONG	TIPO	VALOR
//-------------------------------------------------------------------------

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define ENTERO	1
#define REAL	2
#define TEXTO	3

struct Tabla
{
	char nombre;
	int Tipo;
	int direccion;
	int longitud;
	struct Tabla *sig;
};

// ESTE ES EL MAPA DE LA MEMORIA
struct Memoria
{
	int valor;
	struct Memoria *sig;
};


struct Memoria *Ini_Memoria;
struct Tabla *Ini_Tabla;
// MEMORIA EN LA COMPUTADORA DE NUESTRA MEMORIA
int *Vector[22];

// ANCHO DE LA MEMORIA=80 -letras o nUmeros-
// ALTO DE LA MEMORIA=15 -letras o nUmeros-
// 80*15 = 1200
void InicializaMem()
{
	int k=0;
	struct Memoria *nodo;
	while(k<1200)
	{
		nodo = (struct Memoria*)malloc(sizeof(struct Memoria));
		nodo->valor=0; nodo->sig = NULL;
		if ( !Ini_Memoria ) Ini_Memoria=nodo;
		else { nodo->sig = Ini_Memoria; Ini_Memoria=nodo; }
		k++;
	}
}

void MuestraMem()
{
	int ren, col;
	struct Memoria *Act= Ini_Memoria;

	for(ren=0; ren<15; ren++)
	{
		for(col=0; col<80; col++)
		{
			printf("%i ", Act->valor);
			Act = Act->sig;
		}
		printf("\n");
	}
}

void MuestraTabla()
{
	printf("NOMBRE\t\tTIPO\t\tDIRECCION\t\tLONGITUD\t\tVALOR\n");
}

void Procesar(char *Lectura)
{
	char Var;
	char *Valor=(char*)malloc(80);

	if ( !strcmp("mapa", Lectura) ) MuestraMem();
	if ( !strcmp("tabla", Lectura) ) MuestraTabla();
	if (strlen(Lectura)==1) printf("Variable ...\n");
	// ...
}

void Inicio()
{
	char *Lectura = (char*)malloc(80);
	system("clear");
	while(1)
	{
		strcpy(Lectura, "");
		printf("==> ");
		scanf("%s", Lectura);
		if ( Lectura[0] == 'z' || Lectura[0]=='Z' ) break;
		 Procesar(Lectura);
	}
}

int main(int n, char **a)
{ InicializaMem(); Inicio(); system("clear"); printf("Gracias por usar malloc ...\n\n\n"); }