:DHola! tengo que hacer un programa en C# donde tengo que imprimir una tabla cuadrada de caracteres, esto con arreglos bidimensionales.
Mi problema es el paso del Arreglo Bid. al constructor. tengo esto.
using System;
public class Arreglo
{
char[,] numeros;
int i, j;
public Arreglo( char [,] arreglo)
{ //constructor
numeros = new char[arreglo.Length, arreglo.Length];
//Lo he intentado con numeros = new char[arreglo.Length];
//pero marca error
for ( i=0; i < numeros.Length; i++)
{
for( j=0; j< numeros.Length; j++)
{
numeros[i,j] = arreglo[i,j];
}
}
}//constructor
}//class Arreglo
class MainApp
{
static void Main()
{
char[,] numeros = { {'O','O','O'},{'O','O','O'} };
Arreglo a = new Arreglo (numeros);
Console.ReadLine();
} // main
} // main app
Al compilar [lo compilo desde consola], no me marca error
pero al ejecutar me aparece una excepcion
la excepcion es:
Unhandled Exception: System.IndexOutOfRnageException: Index was outside the bounds of the array.
at Arreglo..ctor<Char[,] arreglo>
at MainApp.Main<>
Espero me puedan ayudar, por su ayuda gracias!!
Esto te parece cuadrado? :rolleyes:
{ {'O','O','O'},{'O','O','O'} }
Saludos
A mi me parece un rectángulo! :D
hmm Mas bien es como ejemplo, el dato es que no me daje compilar porque la forma en la que hago el paso por parametros esta incorrecta.
Es por eso que necesita la ayuda
Pero eso no es lo que dice el error que has dejado ... el error que nos dejas es justamente por eso ... tienes un array rectangular, y no cuadrado, así que mientras puedes recorrer un lado "más lejos", el otro se termina antes :P
Saludos
Pero lo he intentado asi como dices
class MainApp
{
static void Main()
{
char[,] numeros = {{'O','O','O'},{'O','O','O'},{'O','O','O'}};
Arreglo a = new Arreglo (numeros);
a.Imprimir();
Console.ReadLine();
} // main
}
Ejecutando me aparece el mismo error.
que deberia hacer??
No veo nada malo con el código, seguro que el error te da ahí y no en el método imprimir()?
Etiquetas de código!
Saludos
// mi metodo imprimir
public void Imprimir()
{
Console.WriteLine();
for (i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
Console.Write("El valor {0} ", numeros[i,j]);
}
}
}// imprimir
Y a encontre mi problema
tuve que cambiar en el constructor numeros.Length por el tamaño del arreglo (3);
y el codigo queda asi
public Arreglo( char [,] arreglo)
{ //constructor
numeros = new char[arreglo.Length,arreglo.Length];
for ( i=0; i < 3; i++)
{
for( j=0; j< 3; j++)
{
numeros[i,j] = arreglo[i,j];
}
}
}
// mi metodo imprimir
public void Imprimir()
{
Console.WriteLine();
for (i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
Console.Write(" {0} ", numeros[i,j]);
}
Console.WriteLine();
}
}// imprimir
gracias por su ayuda
saludos!!!
Aaaaaaaaaaaa!
Ya he visto cual es el problema, no me había dado cuenta :P ... estas usando numeros.length, y el largo de una matriz es siempre la suma de todas sus dimensiones, así que si tienes una de 3x3, entonces el largo es 9, y ahí es donde te pasabas en el for
Tienes que usar getlength
Saludos
tienes las sintaxias, para implementarlo??
public Arreglo( char [,] arreglo)
{ //constructor
numeros = new char[arreglo.Length, arreglo.Length];
for ( i=0; i < GetLength(0); i++)
{
for( j=0; j< GetLength(1); j++)
{
numeros[i,j] = arreglo[i,j];
}
}
}
como lo he encontrado en unos sitios, debe ir asi, pero me sale error
numeros.getlength(0)
Saludos
usen las etiquetas code :¬¬
[ code=csharp]<Tu codigo aki!!!!>[/code ] Sin los espacios :P