Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Alternativa a GetUpperBound() de VB.NET
#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
    ¡Gracias!
#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:
GAMBAS
  1. Dim aiMat as Integer[] = [2,4]
  2. Print aiMat[0] 'para obtener el 2
  3. Print aiMat[1] 'para el 4



1 Saludo.
[-] Los siguientes 1 usuarios dice gracias a tincho por este post:
  • dariodr
    ¡Gracias!
#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'
[-] Los siguientes 1 usuarios dice gracias a jguardon por este post:
  • dariodr
    ¡Gracias!
#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
    ¡Gracias!
#5

(03-01-2022, 12:22)jguardon escribió:  arrays multidimensionales,

Si dariodr prefiere una matrix anidada:
GAMBAS
  1. Private mat[2, 4] As Integer



(03-01-2022, 15:00)dariodr escribió:  ReDim
Parecería corresponder al Método ". Resize()" de la Clase Array.
Pero las matrices multidimensionales no pueden ser redimensionadas:
   https://gambaswiki.org/wiki/comp/gb/array/resize?l=es

Yo adoptaría esta estratagema:
GAMBAS
  1.  
  2. Public Sub Main()
  3.  
  4.   Dim a, b As Integer
  5.   
  6.   a = 4
  7.   b = 5
  8.  
  9.   mat = New Integer[a, b]
  10.  
  11.   Print mat.Bounds[0]   ' Parecido a "mat.GetUpperBound(0)"
  12.   Print mat.Bounds[1]   ' Parecido a "mat.GetUpperBound(1)"
  13.  



"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
[-] Los siguientes 1 usuarios dice gracias a vuott por este post:
  • dariodr
    ¡Gracias!
#6
Thumbs Up 

Gracias vuott ya lo pude pasar a Gambas.
Estare preguntando algunas cosas.
Salu2
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)