Exemple #1
0
 //constructor
 public ATRIBUTOS(List <Entidad> ent, Archivo arch)
 {
     ent_          = new List <Entidad>();
     atrib_        = new List <Atrib>();
     this.arch     = arch;
     type          = '-';
     ent_          = ent;
     index_entidad = index_atributo = 0;
     InitializeComponent();
     foreach (Entidad e in ent_)
     {
         Entidad.Items.Add(new String(e.GS_NombreEntidad));
     }
     Entidad.Enabled = true;
 }
Exemple #2
0
        //modificar cajon
        public void modificaCajon(Archivo arch)
        {
            long dir_inicial = 0;

            dir_inicial = GS_dirInicial;
            FileStream   stream = new FileStream(arch.GS_path, FileMode.Open, FileAccess.Write, FileShare.ReadWrite);
            BinaryWriter writer = new BinaryWriter(stream);

            stream.Seek(dir_inicial, SeekOrigin.Begin);
            writer.Write(GS_dirInicial);
            writer.Write(GS_dirCubeta);
            writer.Write(GS_dirFinal);
            writer.Close();
            writer.Dispose();
            stream.Close();
            stream.Dispose();
        }
Exemple #3
0
        //modificar valores
        public void modificaValores(Archivo arch)
        {
            long dir_inicial = 0;

            dir_inicial = GS_dirInicial;
            FileStream   stream = new FileStream(arch.GS_path, FileMode.Open, FileAccess.Write, FileShare.ReadWrite);
            BinaryWriter writer = new BinaryWriter(stream);

            stream.Seek(dir_inicial, SeekOrigin.Begin);
            writer.Write(GS_dirInicial);
            writer.Write(dir_valor);
            writer.Write(valor_entero);
            writer.Write(dir_sig_cubeta); // escribe solamente en la 3a cubeta
            writer.Write(dir_final);
            writer.Close();
            writer.Dispose();
            stream.Close();
            stream.Dispose();
        }
Exemple #4
0
        //Asignar memoria a un cajon en el archivo
        public void asignaMemoriaCajon(Archivo arch, int i)
        {
            long dir_inicial = 0;

            dir_inicial   = arch.Tam_archivo();
            GS_dirInicial = dir_inicial;
            FileStream   stream = new FileStream(arch.GS_path, FileMode.Open, FileAccess.Write, FileShare.ReadWrite);
            BinaryWriter writer = new BinaryWriter(stream);

            stream.Seek(dir_inicial, SeekOrigin.Begin);
            writer.Write(GS_dirInicial);
            writer.Write(GS_dirCubeta);
            if (i < 2)
            {
                GS_dirFinal = GS_dirInicial + 24;
            }
            writer.Write(GS_dirFinal);
            writer.Close();
            writer.Dispose();
            stream.Close();
            stream.Dispose();
        }
Exemple #5
0
        //agrega valores a cubeta y cajones

        public void AgregaValores(DataGridView tabla, int filas, int posCelda, Archivo arch)
        {
            int c1, c2, c3;

            c1 = c2 = c3 = 0;
            for (int i = 0; i < filas; i++)
            {
                int modulo = Convert.ToInt32(tabla.Rows[i].Cells[posCelda].Value) % 3;
                switch (modulo)
                {
                case 0:
                    reiniciaValores(c1++, modulo, Convert.ToInt32(tabla.Rows[i].Cells[posCelda].Value), Convert.ToInt64(tabla.Rows[i].Cells[0].Value), arch);
                    break;

                case 1:
                    reiniciaValores(c2++, modulo, Convert.ToInt32(tabla.Rows[i].Cells[posCelda].Value), Convert.ToInt64(tabla.Rows[i].Cells[0].Value), arch);
                    break;

                case 2:
                    reiniciaValores(c3++, modulo, Convert.ToInt32(tabla.Rows[i].Cells[posCelda].Value), Convert.ToInt64(tabla.Rows[i].Cells[0].Value), arch);
                    break;
                }
            }
        }
Exemple #6
0
        //asigna memoria en archivo
        public void AsignaMemoria(Archivo arch)
        {
            long dir_inicial = 0;

            dir_inicial  = arch.Tam_archivo();
            GS_direccion = dir_inicial;
            FileStream   stream = new FileStream(arch.GS_path, FileMode.Open, FileAccess.Write, FileShare.ReadWrite);
            BinaryWriter writer = new BinaryWriter(stream);

            stream.Seek(dir_inicial, SeekOrigin.Begin);
            writer.Write(GS_direccion);
            writer.Write(GS_tipo);
            foreach (Nodo n in GS_nodos)
            {
                writer.Write(n.GS_dirSiguiente);
                writer.Write(n.GS_valor);
            }

            writer.Write(GS_dirSiguiente);
            writer.Close();
            writer.Dispose();
            stream.Close();
            stream.Dispose();
        }
Exemple #7
0
        //asigna valor a las nuevas cubetas
        public void agregaValorenNuevaCubeta(Archivo arch, int caso, int valor, long dirValor)
        {
            int indice = 0;

            switch (caso)
            {
            case 0:
                if (cajon[0].GS_cubeta[2].GS_dirSigCubeta == -1)
                {
                    cajon[0].AgregaCubetaDesbordada(arch);
                    cajon[0].GS_cubeta[3].GS_valor    = valor;
                    cajon[0].GS_cubeta[3].GS_dirvalor = dirValor;
                }
                else
                {
                    indice = cajon[0].GS_CantidadValores() - 1;
                    if (indice >= 2 && indice < 5)
                    {
                        cajon[0].GS_cubeta[indice + 1].GS_valor    = valor;
                        cajon[0].GS_cubeta[indice + 1].GS_dirvalor = dirValor;
                    }
                }
                break;

            case 1:
                if (cajon[1].GS_cubeta[2].GS_dirSigCubeta == -1)
                {
                    cajon[1].AgregaCubetaDesbordada(arch);
                    cajon[1].GS_cubeta[3].GS_valor    = valor;
                    cajon[1].GS_cubeta[3].GS_dirvalor = dirValor;
                }
                else
                {
                    indice = cajon[1].GS_CantidadValores() - 1;
                    if (indice >= 2 && indice < 5)
                    {
                        cajon[1].GS_cubeta[indice + 1].GS_valor    = valor;
                        cajon[1].GS_cubeta[indice + 1].GS_dirvalor = dirValor;
                    }
                }
                break;

            case 2:
                if (cajon[2].GS_cubeta[2].GS_dirSigCubeta == -1)
                {
                    cajon[2].AgregaCubetaDesbordada(arch);
                    cajon[2].GS_cubeta[3].GS_valor    = valor;
                    cajon[2].GS_cubeta[3].GS_dirvalor = dirValor;
                }
                else
                {
                    indice = cajon[2].GS_CantidadValores() - 1;
                    if (indice >= 2 && indice < 5)
                    {
                        cajon[2].GS_cubeta[indice + 1].GS_valor    = valor;
                        cajon[2].GS_cubeta[indice + 1].GS_dirvalor = dirValor;
                    }
                }
                break;
            }

            modifica(caso, arch);
        }
Exemple #8
0
        //reinicia valores especificos

        public void reiniciaValores(int contador, int modulo, int valor, long dirValor, Archivo arch)
        {
            if (cajon[modulo].GS_dirCubeta != -1)
            {
                cajon[modulo].GS_cubeta[contador].GS_valor    = valor;
                cajon[modulo].GS_cubeta[contador].GS_dirvalor = dirValor;
            }
            else
            {
                cajon[modulo].AgregaCubetaEnteros(arch);
                cajon[modulo].GS_cubeta[contador].GS_valor    = valor;
                cajon[modulo].GS_cubeta[contador].GS_dirvalor = dirValor;
            }
            modifica(modulo, arch);
        }
Exemple #9
0
        //funcion para agregar valores enteros
        public void agregaValorEntero(int valor, long dirValor, Archivo arch)
        {
            int modulo = valor % 3;
            int indice = 0;

            switch (modulo)
            {
            case 0:
                cajon[0].GS_color = Color.Red;
                indice            = cajon[0].GS_CantidadValores() - 1;
                if (indice >= 0 && indice < 2)
                {
                    cajon[0].GS_cubeta[indice + 1].GS_valor    = valor;
                    cajon[0].GS_cubeta[indice + 1].GS_dirvalor = dirValor;
                }
                else if (indice < 0)
                {
                    cajon[0].GS_cubeta[0].GS_valor    = valor;
                    cajon[0].GS_cubeta[0].GS_dirvalor = dirValor;
                }
                else
                {
                    agregaValorenNuevaCubeta(arch, modulo, valor, dirValor);
                }

                break;

            case 1:

                cajon[1].GS_color = Color.Purple;
                indice            = cajon[1].GS_CantidadValores() - 1;
                if (indice >= 0 && indice < 2 && cajon[1].GS_dirCubeta != -1)
                {
                    cajon[1].GS_cubeta[indice + 1].GS_valor    = valor;
                    cajon[1].GS_cubeta[indice + 1].GS_dirvalor = dirValor;
                }
                else if (indice < 0 && cajon[1].GS_dirCubeta == -1)
                {
                    cajon[1].AgregaCubetaEnteros(arch);
                    indice = cajon[1].GS_CantidadValores() - 1;
                    if (indice < 0)
                    {
                        cajon[1].GS_cubeta[0].GS_valor    = valor;
                        cajon[1].GS_cubeta[0].GS_dirvalor = dirValor;
                    }
                }
                else
                {
                    agregaValorenNuevaCubeta(arch, modulo, valor, dirValor);
                }
                break;

            case 2:
                cajon[2].GS_color = Color.Blue;
                indice            = cajon[2].GS_CantidadValores() - 1;
                if (indice >= 0 && indice < 2 && cajon[2].GS_dirCubeta != -1)
                {
                    cajon[2].GS_cubeta[indice + 1].GS_valor    = valor;
                    cajon[2].GS_cubeta[indice + 1].GS_dirvalor = dirValor;
                }
                // inicializar cubeta
                else if (indice < 0 && cajon[2].GS_dirCubeta == -1)
                {
                    cajon[2].AgregaCubetaEnteros(arch);
                    indice = cajon[2].GS_CantidadValores() - 1;

                    if (indice < 0)
                    {
                        cajon[2].GS_cubeta[0].GS_valor    = valor;
                        cajon[2].GS_cubeta[0].GS_dirvalor = dirValor;
                    }
                }
                else
                {
                    agregaValorenNuevaCubeta(arch, modulo, valor, dirValor);
                }
                break;
            }

            modifica(modulo, arch);
        }