Example #1
0
 private void btnAlterar_Click(object sender, EventArgs e)  //Método que altera o valor da célula selecionada pelo usuário
 {
     if (int.Parse(linhaUpDown.Text) < 0 || int.Parse(colunaUpDown.Text) < 0)
     {
         MessageBox.Show("Index inválido", "Erro ao alterar", MessageBoxButtons.OK, MessageBoxIcon.Warning);
     }
     else
     if (rgbMA.Checked)                                                                                                       //Verifica se o usuário deseja manipular a matriz A
     {
         matrizA.InserirElemento(int.Parse(linhaUpDown.Text), int.Parse(colunaUpDown.Text), double.Parse(numeroUpDown.Text)); //Chama o método InserirElemento da classe ListaCruzada que, caso a célula exista, apenas altera o seu valor de acordo com o parâmetro passado
         matrizA.Listar(dgvA);                                                                                                //Exibe a matrizA após a alteração
     }
     else                                                                                                                     //Verifica se o usuário deseja manipular a matriz B
     {
         matrizB.InserirElemento(int.Parse(linhaUpDown.Text), int.Parse(colunaUpDown.Text), double.Parse(numeroUpDown.Text)); //Chama o método InserirElemento da classe ListaCruzada que, caso a célula exista, apenas altera o seu valor de acordo com o parâmetro passado
         matrizB.Listar(dgvB);                                                                                                //Exibe a matrizB após a alteração
     }
 }
Example #2
0
        private void LerMatriz(ref ListaCruzada lista, DataGridView dgv, RadioButton qualRb)  //Método para ler um arquivo e construir uma matriz a partir de seus dados
        {
            try
            {
                if (dlgAbrir.ShowDialog() == DialogResult.OK)                 //Verifica se o 'openFileDialog' foi aberto corretamente
                {
                    txtErro.Items.Clear();
                    var    arquivo           = new StreamReader(dlgAbrir.FileName);                                                       //Seleção do arquivo pelo usuário
                    string numeroLinhaColuna = arquivo.ReadLine();                                                                        //variável do tipo string que guarda a linha inteira lida
                    lista = new ListaCruzada(int.Parse(numeroLinhaColuna.Substring(0, 5)), int.Parse(numeroLinhaColuna.Substring(5, 5))); //Instanciação da matriz passada como parâmetro com os valores lidos da primeira linha do arquivo, que guarda o número de linhas e de colunas que a matriz deve ter

                    AjustarDataGridView(dgv, lista.NumLinhas, lista.NumColunas);                                                          //Chama o método que adapta o DataGridView escolhido ao tamanho da matriz lida
                    IniciarControles(true);                                                                                               //Habilitar os botões que agora(após a instanciação da matriz) podem ser selecionados

                    bool teveErro = false;                                                                                                //Variável do tipo boolean que é usada para informar o programa e o usuário na ocorrência de algum erro

                    while (!arquivo.EndOfStream)                                                                                          //Loop que garante que todas as linhas do arquivo serão lidas
                    {
                        Celula lida = Celula.LerRegistro(arquivo);                                                                        //Uma nova célula é criada a partir dos dados lidos, por meio do método da classe Celula LerRegistro, que se encarrega de criar uma nova celula ao ler uma linha por vez

                        if (lida.Coluna < 0 || lida.Linha < 0 || lida.Linha >= lista.NumLinhas || lida.Coluna >= lista.NumColunas)        //Caso os índices de posicionamento da célula seja inválido, a celula não será criada e o erro aparecerá para o usuário
                        {
                            teveErro = true;
                            txtErro.Items.Add($"({lida.Linha}, {lida.Coluna})");
                            continue;
                        }

                        lista.InserirElemento(lida.Linha, lida.Coluna, lida.Valor);   //Caso não haja erro, a célula será criada  e o loop continuará
                    }

                    if (teveErro)                                                        //Em caso de erro, uma mensagem será apresentada ao usuário
                    {
                        lblErro.Text = "Células com index não suportados pela matriz: "; //Mensagem de erro específica à invalidação do posicionamento da célula lida
                    }
                    arquivo.Close();                                                     //Depois do fim da leitura do arquivo, o arquivo é fechado
                    lista.Listar(dgv);                                                   //Listagem da matriz lida no dgv escolhido
                    ExibirInformacoes(lista, 0, 0);
                    if (lista == matrizA)
                    {
                        dgvB.ClearSelection();
                    }
                    else
                    {
                        dgvA.ClearSelection();
                    }
                    qualRb.Checked = true;
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("Selecione um arquivo texto correto", "Erro na leitura da matriz", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }