public IActionResult Cadastro(itens u) { UsuarioRepositorio r = new UsuarioRepositorio(); r.Cadastro(u); return(Redirect("Concluido")); }
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"); } }
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")); }
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"); } }
/// <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); }
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; }
public IActionResult Editar(itens u) { HttpContext.Session.SetInt32("Edit", u.Id); return(RedirectToAction("AlterarPacote")); }