Shell 07-01-2022, 15:00
Buenas!.

Conociendo los caracteres Unicode adecuados para los exponentes (super indices) he podido crear este ejemplo.

Código:
Public Sub Main()

  MostrarDescompFact(100)

End

Public Sub MostrarDescompFact(numero As Integer)''Mostrar descomposición factorial

  Dim valor As String
  Dim cfactores As New Collection

  cfactores = Descomponer(numero)

  Print numero; " = ";
  For Each valor In cfactores
    Print cfactores.key; String.Chr(DevolverSuperIndice(valor)); "*";
  Next
  Print 1

End

Public Sub Descomponer(numero As Integer) As Collection ''Descomponer un números en factores

  Dim n As Integer
  Dim factores As New Collection

  n = 2

  While n <= numero
    If numero Mod n = 0 Then
      numero = numero / n
      If Not factores.Exist(n) Then
        factores.Add(1, n)
      Else
        factores[n] += 1
      Endif
    Else
      n += 1
    Endif
  Wend

  Return factores

End

Public Function DevolverSuperIndice(valor As Integer) As Integer ''Devuelve el carácter unicode de exponente

  Dim codigo As Integer

  'De esta forma se ve mejor que usando Choose
  'El valor 1 no es posible como exponente
  Select Case valor
    Case 2
      codigo = 178
    Case 3
      codigo = 179
    Case 4
      codigo = &2074
    Case 5
      codigo = &2075
    Case 6
      codigo = &2076
    Case 7
      codigo = &2077
    Case 8
      codigo = &2078
    Case 9
      codigo = &2079
  End Select

  Return codigo

End

' Public Sub DevolverSuperIndice2(valor As Integer) As Integer
'  'Esto no va a funcionar
'   Return Choose(valor, Null, 178, 179, &2074, &2075, &2076, &2077, &2078, &2079)
'
' End

Salida:
Cita:100 = 2²*5²*1

No existe un exponente "1", si fuera dos como único factor primo. Hubiera salido 21...mejor 2*1
Eso en el caso del Select, que como veis no he comprobado que el valor fuera 1. He comenzado desde valor 2 para exponente.

A ver si se puede mejorar. Sobre todo la función que usa Choose.

Tener en cuenta que después de esto, podemos optar por crear otras funciones que nos puedan devolver
el máximo común divisor, el mínimo común múltiplo, etc. Ya sería más de un número. Por eso opté por dividir en varias funciones independientes.
El uso de colecciones me parece interesante para el ejemplo.

Saludos
Archivos adjuntos
.gz
DescomponerFactoresPrimos-0.0.1.tar.gz (Tamaño: 12.36 KB Descargas: 1)
dariodr 07-01-2022, 10:45
Buenas: como se limpia la pantalla en gambas (en basic era CLS).
Salu2.
Shell 06-01-2022, 12:37
Feliz día!.

Estoy liado con los caracteres ascii los que son super indices.
En la tabla solo se reflejan dos.

² y ³

Que se puede obtener mediante la clase String. Gambas internamente usa UTF-8.

Código:
Public Sub MostrarSuperIndices()
 
  Print String.Chr(178)
  Print String.Chr(179)
   
End

Pero, ¿ y si estoy interesado en super indices  4, 5...o más ?. Desde la tabla no es posible.

Saludos y que pasen un buen día.
Páginas (557):    1 327 328 329 330 331 557   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 285
Último miembro: XLRG
Temas del foro: 1,720
Mensajes del foro: 8,934
Últimos temas
Archivos .ods
Foro: General
Último mensaje por: tincho, 01-07-2025, 18:54
Respuestas: 8 - Vistas: 214
Publicidad
Foro: Sobre gambas-es.org
Último mensaje por: tincho, 01-07-2025, 18:48
Respuestas: 6 - Vistas: 326
Web con gambas, a ver si ...
Foro: WebApp/WebForms
Último mensaje por: tincho, 01-07-2025, 17:47
Respuestas: 41 - Vistas: 32,551
Un sistema de ayudas cont...
Foro: Videotutoriales
Último mensaje por: guizans, 22-06-2025, 19:55
Respuestas: 3 - Vistas: 293
Crear una aplicación para...
Foro: Bases de Datos
Último mensaje por: Shell, 29-05-2025, 20:11
Respuestas: 11 - Vistas: 1,476
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.