Exemplo n.º 1
0
        private void dgvMatriz_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (matriz1.ValorDe(e.ColumnIndex, e.RowIndex) != 0)
            {
                matriz1.RemoverDePosicao(e.ColumnIndex, e.RowIndex);
            }

            matriz1.Inserir(new Celula(Convert.ToDouble(dgvMatriz.Rows[e.RowIndex].Cells[e.ColumnIndex].Value), e.RowIndex, e.ColumnIndex, null, null));
        }
Exemplo n.º 2
0
        private void Listar(DataGridView dgv, ListaCruzada matriz)
        {
            dgv.Rows.Clear();
            dgv.Columns.Clear();
            for (int i = 0; i < matriz.QtasColunas; i++)
            {
                dgv.Columns.Add(i.ToString(), i.ToString());
            }

            string[] linha = new string[matriz.QtasColunas];
            for (int i = 0; i < matriz.QtasLinhas; i++)
            {
                for (int w = 0; w < matriz.QtasColunas; w++)
                {
                    linha[w] = matriz.ValorDe(w, i).ToString();
                }

                dgv.Rows.Add(linha);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Multiplica duas matrizes
        /// </summary>
        /// <param name="outra">Matriz a ser multiplicada ao this</param>
        /// <returns>Matriz da multiplicação das duas matrizes</returns>
        public ListaCruzada multiplicar(ListaCruzada outra)
        {
            if (qtasColunas != outra.qtasLinhas || outra == null)
            {
                throw new Exception("Não pode ocorrer multiplicação");
            }

            ListaCruzada ret = new ListaCruzada(outra.qtasColunas, qtasLinhas);

            for (int lin = 0; lin < qtasLinhas; lin++)
            {
                for (int col = 0; col < outra.qtasColunas; col++)
                {
                    double valor = 0.0;
                    for (int i = 0; i < qtasColunas; i++)
                    {
                        valor += ValorDe(i, lin) * outra.ValorDe(col, i);
                    }

                    ret.Inserir(new Celula(valor, lin, col, null, null));
                }
            }
            return(ret);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Soma duas matrizes
        /// </summary>
        /// <param name="lista">Lista a ser somada ao this</param>
        /// <returns>Soma das duas matrizes</returns>
        public ListaCruzada somar(ListaCruzada lista)
        {
            if (lista == null)
            {
                throw new NullReferenceException("lista a ser somada está nula");
            }

            ListaCruzada MaiorColuna, MaiorLinha;
            ListaCruzada MenorColuna, MenorLinha;
            int          maiorColuna, maiorLinha = 0;

            if (this.qtasColunas.CompareTo(lista.qtasColunas) > 0)
            {
                maiorColuna = this.qtasColunas;
                MaiorColuna = this;
                MenorColuna = lista;
            }
            else
            {
                maiorColuna = lista.qtasColunas;
                MaiorColuna = lista;
                MenorColuna = this;
            }
            if (this.qtasLinhas.CompareTo(lista.QtasLinhas) > 0)
            {
                maiorLinha = this.qtasLinhas;
                MaiorLinha = this;
                MenorLinha = lista;
            }
            else
            {
                maiorLinha = lista.qtasLinhas;
                MaiorLinha = lista;
                MenorLinha = this;
            }

            ListaCruzada ret = new ListaCruzada(maiorColuna, maiorLinha);

            int colunas, linhas = 0;

            colunas = MenorColuna.qtasColunas;
            linhas  = MenorLinha.qtasLinhas;

            posicionarEmColuna(0);
            atualColuna = atualColuna.Abaixo;
            posicionarEmLinha(0);
            atualLinha = atualLinha.Direita;

            lista.posicionarEmLinha(0);
            lista.atualColuna = lista.atualColuna.Direita;
            lista.posicionarEmColuna(0);
            lista.atualLinha = lista.atualLinha.Abaixo;

            ret.posicionarEmLinha(0);
            ret.atualColuna = lista.atualColuna.Direita;
            ret.posicionarEmColuna(0);
            ret.atualLinha = lista.atualLinha.Abaixo;

            for (int i = 0; i < colunas; i++)
            {
                for (int j = 0; j < linhas; j++)
                {
                    ret.Inserir(new Celula(ValorDe(i, j) + lista.ValorDe(i, j), j, i, null, null));
                }
                for (int k = linhas; k < maiorLinha; k++)
                {
                    ret.Inserir(new Celula(MaiorLinha.ValorDe(i, k), k, i, null, null));
                }
            }

            for (int w = colunas; w < maiorColuna; w++)
            {
                for (int j = 0; j < linhas; j++)
                {
                    ret.Inserir(new Celula(ValorDe(w, j) + lista.ValorDe(w, j), j, w, null, null));
                }
                for (int k = linhas; k < maiorLinha; k++)
                {
                    ret.Inserir(new Celula(MaiorLinha.ValorDe(w, k), k, w, null, null));
                }
            }
            return(ret);
        }