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