Beispiel #1
0
        public IActionResult Cadastro(itens u)
        {
            UsuarioRepositorio r = new UsuarioRepositorio();

            r.Cadastro(u);
            return(Redirect("Concluido"));
        }
Beispiel #2
0
        private void bRun_Click(object sender, EventArgs e)
        {
            try
            {
                int w = int.Parse(tbMochila.Text);
                int aux = 0;
                while (dgItens.Rows[1].Cells[aux].Value != null)
                {
                    aux++;
                }
                itens[] n = new itens[aux + 1];
                n[0].p = 0;
                n[0].v = 0;
                for (int i = 1; i < aux + 1; i++)
                {
                    n[i].p = int.Parse(dgItens.Rows[1].Cells[i-1].Value.ToString());
                    n[i].v = int.Parse(dgItens.Rows[2].Cells[i-1].Value.ToString());
                }

                Stopwatch stopwatch = new Stopwatch();

                bRun.Text = "Rodando...";
                bRun.Enabled = false;

                if (rbMochilaD.Checked)
                {
                    tbVD.Text = "";
                    tbPD.Text = "";
                    this.Refresh();
                    lista[] Lista = new lista[1];
                    Lista[0].i = 0;
                    Lista[0].a = 0;
                    stopwatch.Start();
                    itens q = Mochila_0_1_Dinâmico(n, w, ref Lista);
                    stopwatch.Stop();
                    tbVD.Text = q.v.ToString();
                    tbPD.Text = q.p.ToString();

                    Print_Mochila_Itens(Lista);
                }

                bRun.Enabled = true;
                bRun.Text = "&Rodar algoritmo";
            }
            catch (Exception erro)
            {
                MessageBox.Show(erro.Message, "Erro");
            }
        }
Beispiel #3
0
        public IActionResult EditarCompra(itens u)
        {
            itens persistencia = new itens();

            persistencia.Id         = (int)HttpContext.Session.GetInt32("Edit");
            persistencia.Nome       = u.Nome;
            persistencia.Telefone   = u.Telefone;
            persistencia.Bairro     = u.Bairro;
            persistencia.Bebida     = u.Bebida;
            persistencia.Cidade     = u.Cidade;
            persistencia.Numero     = u.Numero;
            persistencia.Quantidade = u.Quantidade;
            persistencia.Descricao  = u.Descricao;
            UsuarioRepositorio.EditarCompra(persistencia);
            return(RedirectToAction("Editar"));
        }
Beispiel #4
0
        private void bRun_Click(object sender, EventArgs e)
        {
            try
            {
                //Lê o peso máximo da mochila
                int w = int.Parse(tbMochila.Text);
                //Descobre a quantidade de itens
                int aux = 0;
                while (dgItens.Rows[1].Cells[aux].Value != null)
                {
                    aux++;
                }
                //Cria vetor de estrutura com itens
                itens[] n = new itens[aux + 1];
                //Preenche o vetor com os pesos e valores de 0 a n
                n[0].p = 0;
                n[0].v = 0;
                for (int i = 1; i < aux + 1; i++)
                {
                    n[i].p = int.Parse(dgItens.Rows[1].Cells[i - 1].Value.ToString());
                    n[i].v = int.Parse(dgItens.Rows[2].Cells[i - 1].Value.ToString());
                }
                //Cria um Stopwatch para medir o tempo
                Stopwatch stopwatch = new Stopwatch();
                //Desabilita o botão Run e troca o texto
                bRun.Text    = "Rodando...";
                bRun.Enabled = false;
                //Se selecionou algoritmo Cut-Rod
                if (rbMochilaFB.Checked)
                {
                    tbVFB.Text = "";
                    tbPFB.Text = "";
                    tbTFB.Text = "";
                    this.Refresh();
                    stopwatch.Start();

                    stopwatch.Stop();

                    tbTFB.Text = stopwatch.ElapsedMilliseconds.ToString();
                }
                //Se selecionou algoritmo Extended-Botton-Up-Cut-Rod
                if (rbMochilaD.Checked)
                {
                    tbVD.Text = "";
                    tbPD.Text = "";
                    tbTD.Text = "";
                    this.Refresh();
                    lista[] Lista = new lista[1];    //Cria uma nova lista para receber os itens
                    Lista[0].i = 0;
                    Lista[0].a = 0;
                    stopwatch.Start();
                    itens q = Mochila_0_1_Dinâmico(n, w, ref Lista);
                    stopwatch.Stop();
                    tbVD.Text = q.v.ToString();
                    tbPD.Text = q.p.ToString();
                    tbTD.Text = stopwatch.ElapsedMilliseconds.ToString();
                    //Escrever o método para o print dos itens da lista
                    Print_Mochila_Itens(Lista);
                }
                //Habilita o botão Run e troca o texto
                bRun.Enabled = true;
                bRun.Text    = "&Rodar algoritmo";
            }
            catch (Exception erro)
            {
                MessageBox.Show(erro.Message, "Erro");
            }
        }
Beispiel #5
0
        /// <summary>
        /// Coloca na mochila o maior valor possível
        /// usando programação dinâmica
        /// </summary>
        /// <param name="n">lista de itens com valor e peso começa no item 0 nulo</param>
        /// <param name="w">peso máximo da mochila</param>
        /// <param name="Lista">lista com itens selecionados e anterior saída por referência</param>
        /// <returns>peso e valor final da mochila</returns>
        private itens Mochila_0_1_Dinâmico(itens[] n, int w, ref lista[] Lista)
        {
            itens resposta;

            resposta.v = 0;
            resposta.p = 0;

            int c = n.Length;

            itens[] mochila = new itens[w + 1];
            mochila[0].p = 0;
            mochila[0].v = 0;

            Lista      = new lista[w + 1];
            Lista[0].i = 0;
            Lista[0].a = 0;

            bool[] usado = new bool[c];
            for (int i = 0; i < c; i++)
            {
                usado[i] = false;
            }

            //Para cada um dos pesos
            for (int peso = 1; peso <= w; peso++)
            {
                //Mochila começa com as características da mochila de peso uma unidade inferior
                mochila[peso].p = mochila[peso - 1].p;
                mochila[peso].v = mochila[peso - 1].v;
                //Lista começa com item 0 e peso uma unidade inferior
                Lista[peso].i = 0;
                Lista[peso].a = peso - 1;

                //Para cada um dos itens
                for (int item = 1; item < c; item++)
                {
                    //Se o peso atual é maior que o peso do item
                    if (peso >= n[item].p)
                    {
                        //Se o peso atual é >= que o peso de uma solução ótima anterior + o peso do item atual
                        if (peso >= mochila[peso - n[item].p].p + n[item].p)
                        {
                            //Se o valor para o peso atual é < que o valor de uma solução ótima anterior + o valor do item atual
                            if (mochila[peso].v < mochila[peso - n[item].p].v + n[item].v)
                            {
                                //Busca em profundidade nos itens da subsolução ótima
                                bool ok    = true;
                                int  busca = peso - n[item].p;  //Item anterior
                                while (busca > 0)
                                {
                                    int itemAnt = Lista[busca].i;
                                    //Se o item anterior á nulo
                                    if (itemAnt == 0)
                                    {
                                        //busca--;    //Decrementa o peso da busca
                                        //continue;   //Pula para próxima iteração
                                    }
                                    //Se o item anterior é igual ao item atual
                                    if (itemAnt == item)
                                    {
                                        ok = false; //Não pode usar este item
                                        break;      //Quebra o laço
                                    }
                                    //busca -= n[itemAnt].p;  //Aprofunda a busca decrementado do  peso do item anterior
                                    busca = Lista[busca].a;
                                }
                                //Se o item atual é diferente dos itens das subsoluções ótimas anteriores
                                if (ok == true)
                                {
                                    //Atualiza a solução ótima atual
                                    mochila[peso].v = mochila[peso - n[item].p].v + n[item].v;
                                    mochila[peso].p = mochila[peso - n[item].p].p + n[item].p;
                                    //Grava o item e anterior selecionado para solução ótima com peso atual
                                    Lista[peso].i = item;
                                    Lista[peso].a = peso - n[item].p;
                                }
                            }
                        }
                    }
                }
            }
            resposta.v = mochila[w].v;
            resposta.p = mochila[w].p;
            return(resposta);
        }
Beispiel #6
0
        private itens Mochila_0_1_Dinâmico(itens[] n, int w, ref lista[] Lista)
        {
            itens resposta;
            resposta.v = 0;
            resposta.p = 0;

            int c = n.Length;

            itens[] mochila = new itens[w + 1];
            mochila[0].p = 0;
            mochila[0].v = 0;

            Lista = new lista[w + 1];
            Lista[0].i = 0;
            Lista[0].a = 0;

            bool[] usado = new bool[c];
            for (int i = 0; i < c; i++)
            {
                usado[i] = false;
            }

            for (int peso = 1; peso <= w; peso++)
            {

                mochila[peso].p = mochila[peso-1].p;
                mochila[peso].v = mochila[peso-1].v;

                Lista[peso].i = 0;
                Lista[peso].a = peso-1;

                for (int item = 1; item < c; item++)
                {

                    if (peso >= n[item].p)
                    {

                        if (peso >= mochila[peso - n[item].p].p + n[item].p)
                        {
                            if (mochila[peso].v < mochila[peso - n[item].p].v + n[item].v)
                            {
                                bool ok = true;
                                int busca = peso - n[item].p;
                                while(busca > 0)
                                {
                                    int itemAnt = Lista[busca].i;
                                    if (itemAnt == 0)
                                    {
                                    }
                                    if(itemAnt == item)
                                    {
                                        ok = false;
                                        break;
                                    }
                                    busca = Lista[busca].a;
                                }
                                if (ok == true)
                                {
                                    mochila[peso].v = mochila[peso - n[item].p].v + n[item].v;
                                    mochila[peso].p = mochila[peso - n[item].p].p + n[item].p;
                                    Lista[peso].i = item;
                                    Lista[peso].a = peso - n[item].p;
                                }
                            }
                        }
                    }
                }
            }
            resposta.v = mochila[w].v;
            resposta.p = mochila[w].p;
            return resposta;
        }
Beispiel #7
0
 public IActionResult Editar(itens u)
 {
     HttpContext.Session.SetInt32("Edit", u.Id);
     return(RedirectToAction("AlterarPacote"));
 }