Why does the matrix get extra lines?

Asked

Viewed 40 times

0

    private void abrirLabirintoToolStripMenuItem_Click(object sender, 
        EventArgs e)
    {
        OpenFileDialog Abrir = new OpenFileDialog();
        Abrir.ShowDialog();

        string CarregaArq = null;
        string teste = null; //string auxiliar
        StreamReader LeituraDoArq = new StreamReader(Abrir.FileName);
        while (!LeituraDoArq.EndOfStream)
        {
            CarregaArq = LeituraDoArq.ReadToEnd();
            teste = CarregaArq;
            richtxtLabirinto.Text = teste;
        }

        var mt = richtxtLabirinto.Text.Split('\n');
        var mt2 = mt[0].Length; //colunas da matriz
        var mt3 = mt.Count(); //linhas da matriz

        int I = 0, J = 0;
        char[,] ArrChar = new char[mt2, mt3];
        richtxtLabirinto.Text = string.Empty;
        int a = teste.Length;
        int b = 0;
        using (StringReader LendoStr = new StringReader(teste))
        {
            for (I = 0; I < mt2; I++)
            {
                for (J = 0; J < mt3; J++)
                {
                    if (b < a)
                    {
                        ArrChar[I, J] = teste[b];
                        b++;
                    }
                }

            }
        }
        for (I = 0; I < mt2; I++)
        {
            for (J = 0; J < mt3; J++)
            {
                richtxtLabirinto.Text = richtxtLabirinto.Text +
                    Convert.ToString(ArrChar[I, J]);
            }

         }

The matrix gets extra lines, why? Below I am placing an image of the file . txt inserir a descrição da imagem aqui

Result of what is giving this code

inserir a descrição da imagem aqui

  • is wearing a RichTextBox ?

  • Yeah, but relax, I got it fixed, thanks

  • @Braianfreitas, Include your answer and mark as accepted then.

1 answer

0


    private void TamanhoMatriz(ref string[] mt, ref int mt2, ref int mt3)
    {
        mt = richtxtLabirinto.Text.Split('\n');
        mt2 = mt[0].Length;
        mt3 = mt.Count();
        mt2 += 2;//colunas da matriz
        mt3--; //linhas da matriz
        //Foi necessário fazer isso acima por causa do \n na string
    } 

    private void abrirLabirintoToolStripMenuItem_Click(object sender,
        EventArgs e)
    {
        OpenFileDialog Abrir = new OpenFileDialog();
        Abrir.ShowDialog();

        string CarregaArq = null;
        richtxtLabirinto.Text = string.Empty;

        StreamReader LeituraDoArq = new StreamReader(Abrir.FileName);
        CarregaArq = LeituraDoArq.ReadToEnd();

        //o arquivo será carregado em CarregaArq
        richtxtLabirinto.Text = CarregaArq;

        //abaixo a manipulação do tamanho para criar a matriz
        string[] mt = null;
        int mt2 = 0, mt3 = 0;
        TamanhoMatriz(ref mt, ref mt2, ref mt3);

        int I = 0, J = 0; //indice da matriz
        char[,] ArrChar = new char[mt3, mt2]; //declaração já com o tamanho
        richtxtLabirinto.Text = string.Empty;
        int a = CarregaArq.Length;
        int b = 0; //indice da string
        using (StringReader LendoStr = new StringReader(CarregaArq))
        {
            for (I = 0; I < mt3; I++)
            {
                for (J = 0; J < mt2; J++)
                {
                    if (b < a)
                    {
                        /*
                         Se o nº de caracteres for menor que o nº
                         de caracteres da string, atribui a matriz
                         */
                        ArrChar[I, J] = CarregaArq[b];
                        b++;
                    }
                }
            }
        }
    }

Worked perfectly

Browser other questions tagged

You are not signed in. Login or sign up in order to post.