Visual Basic - Sumar dos "estructuras"

Life is soft - evento anual de software empresarial
   
Vista:

Sumar dos "estructuras"

Publicado por Ricardo (2 intervenciones) el 31/10/2015 12:40:14
Hola. En mi programa he creado una estructura llamada "Imaginario" para trabajar con números imaginarios. He creado una función que suma dos números imaginarios. Pero me gustaría poder implementar el código necesario para poder hacer lo siguiente I1 = I2+I3 (siendo I1, I2 e I3) números imaginarios en vez de hacer lo que estoy haciendo actualmente I1 = FuncionSuma(I2, I3).
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Wilfredo Patricio Castillo

Sumar dos "estructuras"

Si lo pones en un List<> a cada estructura, declaras una tercera lista y

Puedes hacer algo así:

NuevaLista=Lista1.Union(Lista2).ToList()

Saludos cordiales
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sumar dos "estructuras"

Publicado por Ricardo (2 intervenciones) el 31/10/2015 19:09:50
Hola. He hecho esta pregunta también en otro foro. Copio la respuesta que me han dado ya que es muy buena.
Respuesta:
Debes agregar un método operator+ a tu estructura, que devuelva un nuevo objeto inicializado con las partes sumadas

1
2
3
Public Shared Operator+(a As Imaginario, b As Imaginario) As Imaginario
	Return New Imaginario(...)
End Operator

si pones la definición de los campos real e imaginario de tu estructura, podría ponerte un ejemplo completo.

En System.Numerics (/r:system.numerics.dll), tienes una estructura de tipo Complex que implementa la suma como Add() y operator+()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Module Module1
 
    Sub Main()
        Dim i1 As New Imaginario(2, 5)
        Dim i2 As New Imaginario(3, -1)
 
        Console.WriteLine(i1 + i2)
        Console.ReadKey()
    End Sub
 
    Structure Imaginario
        Dim real As Integer
        Dim imaginario As Integer
 
        Sub New(r As Integer, i As Integer)
            real = r
            imaginario = i
        End Sub
 
        Public Shared Operator +(a As Imaginario, b As Imaginario) As Imaginario
            Return New Imaginario(a.real + b.real, a.imaginario + b.imaginario)
        End Operator
 
        Public Overrides Function ToString() As String
            Return String.Format("({0},{1}i)", real, imaginario)
        End Function
    End Structure
 
End Module
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Sumar dos "estructuras"

Publicado por Marcelo nthaxor@hotmail.com (225 intervenciones) el 31/10/2015 22:48:50
Ricardo.
Yup. Muy buena respuesta. Se aprende algo nuevo todos los dias...
Gracias por compartir!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar