none
Sustituir un elemento de una lista RRS feed

  • Pregunta

  • Hola,

    Tengo lo siguiente:

    List<List<double>^>^ T; //como un array bidimensional

    Si está inicializado a 0 y quiero sustituir un elemento hago lo siguiente:

    T[0][0]=3;

    Sólo me considera el segundo índice y el primero no lo tiene en cuenta (T[i][0]= 3) por lo que sustituye más valores de la variable.

    He probado a sustituir la segunda list por un array (List<array<double>^>^ T;) pero me sucede lo mismo.

    ¿Cómo se puede hacer?

    Gracias y saludos.


    Liiid

    miércoles, 4 de julio de 2012 11:51

Todas las respuestas

  • que sucede si haces

    List<double> temp =  T[i];

    temp[0] = 3;

    solo para ver si lo haces en mas de una linea funciona

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 4 de julio de 2012 12:43
  • Lo he probado y temp sería el elemento List que debería guardar en T.

    Al hacer lo siguiente:

    List<double> temp = T[0];

    temp[0]=3;

    T[0]=temp; //da error!! por: List<List<double>^>^ T;



    Liiid

    miércoles, 4 de julio de 2012 13:36
  • Al final usaré arrays...


    Liiid

    miércoles, 4 de julio de 2012 13:51
  • Si en lugar de lista trabaja con arreglo seria mucho mejor, ya que el arreglo te proporsiona mecanismo para interactual en los distinto niveles de este, ejemplo:

    // matriz 5X4 5 filas X 4 columnas
                int[,] kk = new int[5,4]{{1,2,3,4}, {5,6,7,8,}, {9,10,11,12}, {13,14,15,16}, {17,18,19,20}};
    
    // matriz 2x2; 2 filas X 2 columnas
                string[,] kk2 = new string[2, 2] {{"hola", "mundo"}, {"como", "esta"} };
    
                // procesar filas
                for (int i = kk.GetLowerBound(0); i < kk.GetUpperBound(0) + 1; i++)
                {
                    // procesar columnas
                    for (int j = kk.GetLowerBound(1); j < kk.GetUpperBound(1) + 1; j++)
                    {
                        label1.Text += "\n" + kk[i,j].ToString();
    
                        //kk[0, 1] = 2;
                    }
                }

    Array.GetLowerBound (Método)

    Array.GetUpperBound (Método)


    Angel R. Jimenez G.
    Software Development
    Santo Domingo
    Republica Dominicana
    Blog

    miércoles, 4 de julio de 2012 14:00
  • T[0]=temp; //da error!! por: List<List<double>^>^ T;

    pero no necesitas asignar nada, los objetos se accedes por referencia, cuando hiciste

    temp[0]=3;

    ya cambiaste el valor directamente

    esta linea

    T[0]=temp;

    esta de mas

    puedes luego de cambiar validar el valor y veras que obtienes el cambio


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 5 de julio de 2012 2:48
  • Hola.

    No se porque usas List<T> para manejar double, pero bueh,,,, lo unico que veo raro es debes de usar el metodo Add() del List<T> para agregar elementos, y para recorrerlos bubles for, foreach, LINQ o Lambda Expressions.

    Mira un ejemplo simple recorriendolo con bubles foreach anidados.

    List<List<double>> lista = new List<List<double>>();
                List<double> otra0 = new List<double>(){1,2,3,4,5};
                List<double> otra1 = new List<double>() { 4,5,6,7,8,9,10 };
                lista.Add(otra0);
                lista.Add(otra1);
                string l = string.Empty;
                foreach (var i0 in lista)
                {
                    foreach (var i1 in i0)
                    {
                        l += i1.ToString() + Environment.NewLine;
                    }
                }
                MessageBox.Show(l);

    Saludos.


    - Si un comentario te ayuda a resolver tu problema, marcalo como respuesta, pero si basado en tu experiencia la consideras como util para la comunidad de desarrolladores, marcalo como util.

    jueves, 5 de julio de 2012 12:29
  • si declaro temp;

    List<double>^Temp = T[0],

    sí que actualiza el valor de T[0].

    Pero sigue sucediendo lo mismo, se actualizan todos los valores:

    T[0][0]=3

    T[1][0]=3

    T[2][0]=3

    ...


    Liiid

    jueves, 5 de julio de 2012 15:08