none
Matriz/ Vetor RRS feed

  • Pergunta

  • Boa noite pessoal!

    Como eu faço para transferir valores que estão em um Vetor para uma matriz?

    Estou fazendo como abaixo mas ta dando oerro: Index was outside the bounds of the array. Me ajudem por favor....

    O arquivo que o programa ta lendo tem o seguinte conteúdo:

    1|1|1|1|

    1|1|1|1|

    1|1|1|1|

    E esse é o meu código.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    /* Gerar um código que leia um grafo em arquivo, e faça a verificação se é hamiltoniano*/
     

    namespace ConsoleApplication1
    {
        class Program
        {
            /*Aqui estarão os métodos para avaliação */
            static void Main(string[] args)
            {
                //lendo o arquivo que contém o grafo.
                TextReader arquivo = File.OpenText(@"H:\matriz.txt");
                 string num;
                //separando os dados com o split
          
         
                while ((num = arquivo.ReadLine())!= null)
                {
                   
                    string [] intermedium = num.Split('|');

                    foreach (string x in intermedium)
                    {
                         Console.Write(x);
                    }
               
                    //criando a matriz

                    int a = 3   ; //índice das linhas
                    int b =4; //índice das colunas
                    int[,] matriz = new int[a, b];

                     //laço para preencher a matriz com os dados originados do arquivo                       
     
                    foreach (string z in intermedium)
                    {
                        for (int i = 0; i <a; i++)
                        {
                            for (int j = 0; j <b; j++)
                            {

                                matriz[a,b] = (int.Parse(z));

                            }
                            
                        }
                    }
                }
                arquivo.Close();

                
                Console.ReadKey();



               
            }
        }
    }

    Socorro galera.. É pra um trabalho e sinceramente essa é a parte mais boba.. To perdida :(

    Obrigada!

    Graciele (tuckinha1302@ hotmail.com)


    Graciele de Deus Pereira

    terça-feira, 26 de março de 2013 01:14

Todas as Respostas

  • Boa noite Graciele,

    Postarei um código com o exemplo de um preenchimento de uma matriz partindo de uma lista de estudantes:

    public Student[,] OrganizeClass(short rows, short cols, List<Student> Students)
    {
        Student[,] OrganizedClassroom = new Student[rows, cols];
    
        short rowCount = 0;
        short colCount = 0;
    
        foreach (Student student in Students.OrderBy(x=> x.Height))
        {
            OrganizedClassroom[rowCount, colCount] = student;
            colCount++;
                    
            if (colCount >= cols)
            {
                colCount = 0;
                rowCount++;
            }
        }
                
        return OrganizedClassroom;
    }

    Tente entender a lógica e aplicar no seu caso.

    Abraços.

    terça-feira, 26 de março de 2013 05:13
  • Olá,

    Segue o código, serve para qualquer txt na estrutura que você postou:

    void Ler()
    {  
        TextReader arquivo = File.OpenText(@"H:\matriz.txt");
        string num;
    
        int a = 3; //índice das linhas
        int b = 4; //índice das colunas
        int[,] matriz = new int[a, b];
    
        //Lê o arquivo inteiro, removendo os caracteres de escape
        var dados = arquivo.ReadToEnd().Replace("\r\n", "");
    
        //Retira o ultimo | para evitar posição vazia no vetor
        dados = dados.Substring(0, dados.Length - 1);
    
        //Splita os dados
        string[] intermedium = dados.Split('|');
    
        int row = 0;
        int col = 0;
    
    
        foreach (string z in intermedium)
        {              
                if (col < b)
                {
                    matriz[row, col] = int.Parse(z);
                    col++;                     
                }
                else
                {
                    row++; 
                    matriz[row, 0] = int.Parse(z);
                    col = 1;
                }
         
         
        }
    
        arquivo.Close();
    
    }


    terça-feira, 26 de março de 2013 11:48