dariodr   03-01-2022, 07:50
#1
Bueno(a)s: dias, tardes, noches. Hay alguna alternativa a GetUpperBound (comando de VB.NET) en gambas.
Vean este ejemplo:

 Private mat(2, 4) As Integer

Como las matrices son objetos en Visual Basic .Net disponemos de un método llamado GetUpperBound(numero de índice) que le pasamos como parámetro la dimensión y nos retorna el valor de dicha dimensión.

Para la definición de la matriz indicada arriba si accedemos a la primera dimesión con el método GetUpperBound retorna un 2:
Console.WriteLine(mat.GetUpperBound(0))

Si accedemos a la segunda dimesión se imprime un 4:
Console.WriteLine(mat.GetUpperBound(1))

La primer dimensión son la cantidad de filas más uno y la segunda dimensión son la cantidad de columnas más uno de la matriz.

Saludos

         Dario Delgado Razuri
Siempre aprendiendo algo nuevo
tincho   03-01-2022, 10:30
#2
(03-01-2022, 07:50)dariodr escribió: Private mat(2, 4) As Integer

Para obtener los ítems de una lista como la que pasaste basta con
en gambas se define:
Código:
Print aiMat[0] 'para obtener el 2
Print aiMat[1] 'para el 4

1 Saludo.
jguardon   03-01-2022, 12:22
#3
En este caso tincho, creo que dariodr está hablando de arrays multidimensionales, concretamente de 2 dimensiones y 4 elementos cada dimensión. Una matriz de 2x4.

Ahora mismo estoy desde el móvil y no puedo desarrollar la respuesta, solo diré que es muy fácil manejarse con matrices igual que en VB.net. La sintaxis es array[a][b] y los mismos métodos de arrays simples funcionan para las matrices, que por supuesto son enumerables.

Ahí lo dejo de momento, por si alguien puede completar mi respuesta.

Saludos y Feliz 2022

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
dariodr   03-01-2022, 15:00
#4
Tengo este codigo en VB.NET y lo quiero pasar a GAMBAS, los unicos problemas son el ReDim y el GetUpperBound, alguien sabe cual es la alternativa. Lo demas ya esta hecho.
Código:
 
Public Class Matriz5

Private mat(,) As Integer

Public Sub Cargar()
Dim filas, columnas As Integer
Console.Write("Cuantas fila tiene la matriz:")
filas = Console.ReadLine()
Console.Write("Cuantas columnas tiene la matriz:")
columnas = Console.ReadLine()
ReDim mat(filas - 1, columnas - 1)
Dim f, c As Integer
For f = 0 To mat.GetUpperBound(0)
For c = 0 To mat.GetUpperBound(1)
Console.Write("Ingrese componente:")
mat(f, c) = Console.ReadLine()
Next
Next
End Sub

Public Sub Imprimir()
Dim f, c As Integer
For f = 0 To mat.GetUpperBound(0)
For c = 0 To mat.GetUpperBound(1)
Console.Write(mat(f, c) & " ")
Next
Console.WriteLine()
Next
End Sub

Public Sub ImprimirUltimaFila()
Dim c As Integer
Console.WriteLine("Ultima fila")
For c = 0 To mat.GetUpperBound(1)
Console.Write(mat(mat.GetUpperBound(0), c) & " ")
Next
End Sub
End Class


Sub Main()
Dim ma As New Matriz5()
ma.Cargar()
ma.Imprimir()
ma.ImprimirUltimaFila()
Console.ReadKey()
End Sub 
Saludos

         Dario Delgado Razuri
Siempre aprendiendo algo nuevo
vuott   03-01-2022, 15:12
#5
(03-01-2022, 12:22)jguardon escribió: arrays multidimensionales,

Si dariodr prefiere una matrix anidada:
Código:
[hr]
[quote='dariodr' pid='4236' dateline='1641214822']
ReDim
[/quote]
Parecería corresponder al Método ". Resize()" de la Clase [i]Array[/i].
Pero las matrices multidimensionales no pueden ser redimensionadas:
   https://gambaswiki.org/wiki/comp/gb/array/resize?l=es

Yo adoptaría esta estratagema:
[code]

Public Sub Main()

  Dim a, b As Integer
  
  a = 4
  b = 5

  mat = New Integer[a, b]
 
  Print mat.Bounds[0]   ' Parecido a "mat.GetUpperBound(0)"
  Print mat.Bounds[1]   ' Parecido a "mat.GetUpperBound(1)"

End
Última modificación: 03-01-2022, 19:40 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
dariodr   04-01-2022, 06:38
#6
Gracias vuott ya lo pude pasar a Gambas.
Estare preguntando algunas cosas.
Salu2

         Dario Delgado Razuri
Siempre aprendiendo algo nuevo
  
Usuarios navegando en este tema: 2 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.