Inquiridor
Matriz/ Vetor

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
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.
-
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(); }
- Editado Israel Vilela terça-feira, 26 de março de 2013 11:49