// 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"); }