none
Cómo comparar si dos matrices son iguales

    Pregunta


  • Dim MatrizUno() As Integer, MatrizDos() As Integer

    MatrizUno = {23, 42, 12}

    MatrizDos = {23, 42, 12}

    * If MatrizUno = MatrizDos Then: esto no vale, no te compila, porque este operador no te funciona dado que MatrizUno y MatrizDos no te almacenan matrices sino punteros a sus respectivas matrices.

    * If MatrizUno Is MatrizDos Then: esto me daría False en el ejemplo que he puesto, ya que lo que estoy comprobando no es si son iguales, sino si apuntan al mismo sitio los dos punteros.

    * If MatrizUno.Equals (MatrizDos): tenía la sensación de que iba a funcionar... pero no... sigue dándome False en el ejemplo anterior.

    ¿Cómo puedo hacer para comprobar si dos matrices son iguales, aunque no sean el mismo objeto? Quiero decir, aparte de hacer una función que compare iterativamente los elementos de una matriz con los de la otra uno por uno y me devuelva un valor booleano.

    Gracias por la atención, y Feliz Navidad y próspero año nuevo.


    miércoles, 28 de diciembre de 2016 21:17

Respuestas

  • Carlos Mtz,

    Realiza la comparación mediante el método de extensión SequenceEqual():

    If MatrizUno.SequenceEqual(MatrizDos) Then
    	MessageBox.Show("Matrices iguales")
    Else
    	MessageBox.Show("Matrices distintas")
    End If


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 28 de diciembre de 2016 21:26

Todas las respuestas

  • Carlos Mtz,

    Realiza la comparación mediante el método de extensión SequenceEqual():

    If MatrizUno.SequenceEqual(MatrizDos) Then
    	MessageBox.Show("Matrices iguales")
    Else
    	MessageBox.Show("Matrices distintas")
    End If


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 28 de diciembre de 2016 21:26
  • Muchísimas gracias por la rapidez en la respuesta, Willams. No me compila, no me reconoce el método SequenceEqual. ¿Estás seguro de que es VB? ¿Habrá una letra que falte o que sobre?

    Carlos Martínez Trueba.

    viernes, 30 de diciembre de 2016 22:46
  • Carlos Mtz,

    ¿Tienes escrito el espacio de nombres correspondiente?: Imports System.Linq



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 30 de diciembre de 2016 23:08