Autor
|
Tema: Parametros de entrada, arreglos bidimensionales (Leído 11,431 veces)
|
greenselves
Desconectado
Mensajes: 73
|
: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!!
|
|
« Última modificación: 15 Marzo 2010, 16:30 pm por Novlucker »
|
En línea
|
Greenselves
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Esto te parece cuadrado? { {'O','O','O'},{'O','O','O'} } Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
[D4N93R]
Wiki
Desconectado
Mensajes: 1.646
My software never has bugs. Its just features!
|
A mi me parece un rectángulo!
|
|
|
En línea
|
|
|
|
greenselves
Desconectado
Mensajes: 73
|
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
|
|
|
En línea
|
Greenselves
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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 Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
greenselves
Desconectado
Mensajes: 73
|
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??
|
|
« Última modificación: 15 Marzo 2010, 20:08 pm por Novlucker »
|
En línea
|
Greenselves
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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
|
|
« Última modificación: 15 Marzo 2010, 20:06 pm por Novlucker »
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
greenselves
Desconectado
Mensajes: 73
|
// 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
|
|
|
En línea
|
Greenselves
|
|
|
greenselves
Desconectado
Mensajes: 73
|
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!!!
|
|
|
En línea
|
Greenselves
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Aaaaaaaaaaaa! Ya he visto cual es el problema, no me había dado cuenta ... 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 getlengthSaludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Bash; Pasaje de arreglos como parametros a funciones
Scripting
|
astinx
|
1
|
5,257
|
29 Octubre 2011, 20:24 pm
por astinx
|
|
|
[C] Paso de arreglos bidimensionales a funciones. (?)
Programación C/C++
|
oblivionxor
|
9
|
12,583
|
22 Febrero 2013, 06:45 am
por oblivionxor
|
|
|
arreglos bidimensionales y funciones
Programación C/C++
|
m@o_614
|
3
|
2,982
|
16 Julio 2013, 22:33 pm
por eferion
|
|
|
duda con arreglos bidimensionales
Programación C/C++
|
nicolas04
|
1
|
2,095
|
26 Junio 2014, 21:23 pm
por Flakito81
|
|
|
Arreglos Bidimensionales
Java
|
Marthy
|
1
|
2,464
|
9 Febrero 2021, 15:50 pm
por K-YreX
|
|