• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

joaoallen

Ajuda [criação de matrizes em C#]

5 mensagens neste tópico

:hmm: Pessoal tenho um problema...Preciso de criar matrizes em visual C#, o meu professor disse que era como criar em C.

Isto e, eu faxo:

single var[12][2]; <-- Mas isto dá erro e eu não percebo porque... A não ser que o meu professor me tenha explicado mal

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O teu professor enganou-te :thumbsup:

Em C# esse tipo de acesso, var[][], não tem o mesmo significado que em C.

Para declarares uma matriz fazes: var[linhas, colunas], por exemplo:


String[,] nomes = new String[2, 2] { {"Maria","José"}, {"António","XPTo"} };

int[,] algunsNumeros = new int[,] { {1, 2}, {3, 4}, {5, 6} };

//Podes omitir o operador new
int[,] algunsNumeros = { {1, 2}, {3, 4}, {5, 6} };

//Podes declarar logo o tamanho da matriz
String[2,3] nomes;

Os arrays unidimensionais ou vectores como lhes quiseres chamar, podem ser usados da mesma forma que os de C, mas os multidimensionais não, isto é matrizes não são declaradas como as de C.

A estrutura que o teu professor deu é de matrizes mas não se comportam da mesma forma, é para fazer algo equivalente às tabelas do Java.

Já agora, se tiveres oportunidade compra ou aluga ou sei lá, uma cópia do livro C# 2.0 de Hernâni Pedroso e Paulo Marques, editado pela FCA. Não sou muito adepto dos livros da FCA mas este está bom para uma introdução ao C#

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aproveito este tópico para tirar uma duvida.

Já varias vezes estava a ler artigos e tutoriais sobre programação, nomeadamente sobre c# e uma das coisas que esses artigos "falam" é sobre vectores e matrizes.

A minha duvida é a seguinte: então mas afinal os vectores são simples arrays unidimensionais  e as matrizes arrays multidimensionais ( também se podem dizer bidimensionais, certo? ) ?

Cumps  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Um vector bidimensional tem 2 dimensões, um multidimensional pode ter 2 ou 3 dimensões. Multi = mais que uma.

E a sintaxe

int[][] c;

está correcta, a inicialização é que não. Com esta declaração cria-se um jagged array, que é um array de arrays, em que cada linha pode ter um tamanho diferente das outras:

        static void Main(string[] args)        {
            int[][] arr = new int[4][];
            for (int i = 0; i < 4; ++i)
            {
                arr[i] = new int[i + 1];
                for (int j = 0; j < i + 1; ++j)
                    arr[i][j] = j;
            }

            for (int i = 0; i < 4; ++i)
                for (int j = 0; j < i + 1; ++j)
                    Console.WriteLine("arr[{0}][{1}] = {2}", i, j, arr[i][j]);

            Console.Read();

        }

Neste código, cria-se um jagged array em que a 1ª linha contém um elemento, a 2ª 2 elementos, e por aí fora:

int [][] arr =
[ 0
  0 1
  0 1 2
  0 1 2 3 ]

Claro que isto dá mais trabalho a construir o array, mas por vezes é útil.

PS: ena, só agora é que vi que este tópico já tem uns meses... ::)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No livro que uso para consultas (C# How To Program) diz que as matrizes definidas como:

int[][] matriz = new int[2][2]

e

int[,] matriz = new int[2,2]

funcionam de forma diferente (se bem me lembro), isso é verdade?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora