Comunidad Gambas-es
Conversor numero romano a arabico o arabico a romano - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: Conversor numero romano a arabico o arabico a romano (/thread-310.html)

Páginas: 1 2


Conversor numero romano a arabico o arabico a romano - portaro - 17-03-2021

Alguien   sabe si hay por la web algun programa instalable para Gambas que haga conversion de numero romano a arabe y de arabe a romano.

Tengo un programa que siempre lo usaba ya que no habia otro y era muy bueno y consistia en un ejecutable hecho para Linux Mint que si lo marcabas como ejecutable se lanzaba con el click o desde menu y podias poner los numeros en arabe o romano y te los convertia entre ellos.

Pero ahora hice la transicion de Lubuntu 14.04 a Bunsenlabs y ese mismo programa no se lanza por falta de child process (proceso hijo).

He buscado en la gambas farm y no logro ver nada similar pero seguro que alguno hizo eso en Gambas y no lo encuentro.

Si teneis idea de algo decid, mil gracias por ello.

Por si quereis probar el programa que hablo, tube que subirlo a la web ya que la pagina de donde lo baje alla por 2014 no logre encontrarla no e acuerdo de ella en concreto y no la encuentro en mis bookmarks importados, hice muchas busquedas y nada.
Dejo un enlaze donde lo subi or 7 dias ya que el maga.nz tambien empezo a no loguearme.
Decir ademas que ya he visto un monton de scripts que hacen cosas a medio pero ninguno hace lo que hacias este
rom2num

Gracias.


RE: Conversor numero romano a arabico o arabico a romano - portaro - 17-03-2021

He logrado obtener ayuda en el foro bunsenlabs para de alguna forma tener algo usable.

Consiste en usar python pip y un script llamado roman.

Si so insteresa dejo el tema →

bunsenlabs

Si quereis usar ha que instalar pip 
Cita:
Código:
sudo apt-get install python3-pip

Despues instalar el script programa
Cita:
Código:
pip3 install --user roman

Y despues para usar el programa hay que tener alias en el bash.rc
Cita:alias a2r="~/.local/bin/roman"

alias r2a="~/.local/bin/roman -r"

Uno para las operaciones romano a arabico y la otra para arabico a romano

Despues para que el script programa se use hay que ira al directorio de su ejecutor que es en 
Cita:cd ~/.local/bin

Y ally darle uso a la interpretacion que el programa acepta
Cita:$ ./roman -r XXX

$ ./roman 30



RE: Conversor numero romano a arabico o arabico a romano - cogier - 18-03-2021

He conseguido que esto funcione de árabe a romano. Voy a trabajar en el romano al árabe.

Código:
' Gambas class file

HBox1 As HBox
HBox2 As HBox
TextBoxArabIn As TextBox
Label1 As Label
Label2 As Label
LabelRomanOut As Label

sThous As String[] = ["", "M", "MM", "MMM", "MMMM", "MMMMM", "MMMMMM", "MMMMMMM", "MMMMMMMM", "MMMMMMMMM"]
sHuns As String[] = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"]
sTens As String[] = ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"]
sNumerals As String[] = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"]
sAll As String[][] = [[""], sThous, sHuns, sTens, sNumerals]

Public Sub TextBoxArabIn_Change()

  Dim sText As String = Trim(TextBoxArabIn.Text)
  Dim sCheck As String = "0123456789"
  Dim iLoop, iCount As Integer
  Dim sWork As New String[]

  If Len(sText) > 4 Then sText = Mid(sText, 1, 4)
  sWork.Add("")
  LabelRomanOut.Text = ""

  For iLoop = 0 To Len(sText) - 1
    If InStr(sCheck, sText[iLoop]) > 0 Then sWork.Add(sText[iLoop])
  Next

  iCount = 5 - sWork.Max

  For iLoop = 1 To sWork.Max
    LabelRomanOut.Text &= sAll[iCount][Val(sWork[iLoop])]
    Inc iCount
  Next

  TextBoxArabIn.Text = Mid(sWork.Join(""), 1)

End

Public Sub Form_Open()

  With Me
    .H = 65
    .W = 460
    .Arrangement = Arrange.Vertical
    .Padding = 5
  End With

  With HBox1 = New HBox(Me)
    .H = 28
  End With

  With HBox2 = New HBox(Me)
    .H = 28
    .Invert = True
  End With

  With TextBoxArabIn = New TextBox(HBox1) As "TextBoxArabIn"
    .H = 28
    .W = 80
    .Alignment = Align.Right
  End With

  With Label1 = New Label(HBox1)
    .H = 28
    .W = 35
    .Alignment = Align.Center
    .Text = " = "
  End With

  With LabelRomanOut = New Label(HBox1) As "LabelRomanOut"
    .H = 28
    .Border = Border.Plain
    .Expand = True
    .Font = Font["freeserif,12,bold"]
  End With

  With Label2 = New Label(HBox2)
    .H = 28
    .AutoResize = True
    .Alignment = Align.BottomRight
    .Text = "Charlie Ogier Software"
  End With

End



RE: Conversor numero romano a arabico o arabico a romano - portaro - 18-03-2021

Smile  Pues seria util tener un programa para eso a distancia de click, imagino que en gambas se pueda hacer por eso lo puse por aqui. Lo que no esperaba era que alguien lo hiciera tan rapido ya que por mucho que busquemos por net no hay ninguno y debe ser dificil hacerlo. Pero Gambas es potente y nos pude sorprender.

Gracias por tu aporte estare atento al hilo por lo menos puedo leer código y intentar aprender.


RE: Conversor numero romano a arabico o arabico a romano - cogier - 18-03-2021

BIEN. Aquí está el programa completo. Ahora puedes convertirlo de cualquier manera. Hazme saber si hay algún error.

Código:
' Gambas class file

HBox1 As HBox
HBox2 As HBox
HBox3 As HBox
TextBoxArabIn As TextBox
TextBoxRomanIn As TextBox
Label1 As Label
Label2 As Label
Label3 As Label
LabelRomanOut As Label
LabelArabOut As Label
Panel1 As Panel

sThous As String[] = ["", "M", "MM", "MMM", "MMMM", "MMMMM", "MMMMMM", "MMMMMMM", "MMMMMMMM", "MMMMMMMMM"]
sHuns As String[] = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"]
sTens As String[] = ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"]
sNumerals As String[] = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"]
sAll As String[][] = [[""], sThous, sHuns, sTens, sNumerals]

Public Sub TextBoxArabIn_Change()

  Dim sText As String = Trim(TextBoxArabIn.Text)
  Dim iLoop, iCount As Integer
  Dim sWork As New String[]

  If Len(sText) > 4 Then sText = Mid(sText, 1, 4)
  sWork.Add("")
  LabelRomanOut.Text = ""

  For iLoop = 0 To Len(sText) - 1
    If InStr("0123456789", sText[iLoop]) > 0 Then sWork.Add(sText[iLoop])
  Next

  iCount = 5 - sWork.Max

  For iLoop = 1 To sWork.Max
    LabelRomanOut.Text &= sAll[iCount][Val(sWork[iLoop])]
    Inc iCount
  Next

  TextBoxArabIn.Text = Mid(sWork.Join(""), 1)
  TextBoxRomanIn.Text = LabelRomanOut.Text

End

Public Sub TextBoxRomanIn_Change()

  Dim sOrder As String[] = ["M", "D", "C", "L", "X", "V", "I"]
  Dim iOrder As Integer[] = [1000, 500, 100, 50, 10, 5, 1]
  Dim sLess As String[] = ["CM", "CD", "XC", "XL", "IX", "IV"]
  Dim iLess As Integer[] = [900, 400, 90, 40, 9, 4]
  Dim sText As String = Trim(UCase(TextBoxRomanIn.Text))
  Dim iLoop, iTotal As Integer
  Dim iPos As Integer
  Dim sHold, sVal As String

  For iLoop = 0 To Len(sText) - 1
    If InStr("MDCLXVI", sText[iLoop]) > 0 Then sHold &= sText[iLoop]
  Next

  sText = sHold

  For iLoop = 0 To sLess.Max
    iPos = InStr(sHold, sLess[iLoop])
    If iPos > 0 Then
      sVal = Mid(sHold, iPos, 2)
      iTotal += iLess[sLess.Find(sVal)]
      sHold = Replace(sHold, sVal, "")
    End If
  Next

  For iLoop = 0 To Len(sHold) - 1
    iTotal += iOrder[sOrder.Find(sHold[iLoop])]
  Next

  LabelArabOut.Text = Str(iTotal)
  TextBoxRomanIn.Text = sText
  TextBoxArabIn.Text = LabelArabOut.Text

End

Public Sub Form_Open()

  With Me
    .H = 100
    .W = 460
    .Arrangement = Arrange.Vertical
    .Padding = 5
    .Title = "V=5"
  End With

  HBox1 = New HBox(Me)
  HBox1.H = 28

  With TextBoxArabIn = New TextBox(HBox1) As "TextBoxArabIn"
    .H = 28
    .W = 80
    .Alignment = Align.Right
  End With

  With Label1 = New Label(HBox1)
    .H = 28
    .W = 35
    .Alignment = Align.Center
    .Text = " = "
  End With

  With LabelRomanOut = New Label(HBox1) As "LabelRomanOut"
    .H = 28
    .Border = Border.Plain
    .Expand = True
    .Font = Font["freeserif,12,bold"]
  End With

  Panel1 = New Panel(Me)
  Panel1.H = 7

  HBox3 = New HBox(Me)
  HBox3.H = 28

  With TextBoxRomanIn = New TextBox(HBox3) As "TextBoxRomanIn"
    .H = 28
    .Expand = True
    .Font = Font["freeserif,12,bold"]
  End With

  With Label3 = New Label(HBox3)
    .H = 28
    .W = 35
    .Alignment = Align.Center
    .Text = " = "
  End With

  With LabelArabOut = New Label(HBox3) As "LabelArabOut"
    .H = 28
    .W = 80
    .Border = Border.Plain
    .Alignment = Align.Right
  End With

  With HBox2 = New HBox(Me)
    .H = 28
    .Invert = True
  End With

  With Label2 = New Label(HBox2)
    .H = 28
    .AutoResize = True
    .Alignment = Align.BottomRight
    .Text = "Charlie Ogier Software V1.0.0"
  End With

End



RE: Conversor numero romano a arabico o arabico a romano - portaro - 18-03-2021

Si el programa funciona aqui, solo necesito ahora hacerle la parte grafica creo que eso lo puedo intentar.

Menudo trabajo hiciste en tan poco tiempo. Es que soys genios por aqui  Smile .

A ver si ponemos algun .deb por aqui para que funcione a click, tambien lo puedes subir a gambas farm creo que seria un buen programa para tener ally.

Seguir informando sobre el tema grafico.


RE: Conversor numero romano a arabico o arabico a romano - portaro - 18-03-2021

He hecho un Fmain y le he puesto los componentes o controles con el nombre especificado, le he puesto distintos colores a los componentes para diferenciar mientras intento hacer que me devuelva el resultado en el tema grafico.

El color background blanco pertenece a los label con el nombre LabelRomanOut y LabelArabOut.

Pero no logro hacer que me aparezca el resultad en los componentes.
Podria ser falta de algun componente le puse gb.qt5 y gb.qt5.ext ?
Podria necesitar algun Module ?



Dejo una imagen.

[Imagen: Captura-de-ecr-2021-03-18-19-32-48.png]

[Perdona pero soy muy novato en esto de Gambas ya apenas se algunas cosillas más que nada conozco un poquito el IDE y sus menus pero de programación no entiendo mucho]

Gracias


RE: Conversor numero romano a arabico o arabico a romano - cogier - 19-03-2021

Creo que lo has entendido mal. Los gráficos se crean en el código. Sólo tienes que pegar el código y ejecutar el programa.

Mira el video.


RE: Conversor numero romano a arabico o arabico a romano - portaro - 19-03-2021

En efecto yo me fijo en tu codigo y creo que esa class.c tiene especificado el formulario o sea lo hiciste todo ally pero por algun motivo a mi el FMAIN grafico me sale todo en a te dejo foto.

Asi como soy tan novato pense que tenia que hacerle un FMAIN y al leer bien el código veo que ya lo haz hecho aqui →
Cita:
  1. Public Sub Form_Open()
  2.  
  3.   With Me
  4.     .H = 100
  5.     .W = 460
  6.     .Arrangement = Arrange.Vertical
  7.     .Padding = 5
  8.     .Title = "V=5"
  9.   End With
  10.  
  11.   HBox1 = New HBox(Me)
  12.   HBox1.H = 28
  13.  
  14.   With TextBoxArabIn = New TextBox(HBox1) As "TextBoxArabIn"
  15.     .H = 28
  16.     .W = 80
  17.     .Alignment = Align.Right
  18.   End With
  19.  
  20.   With Label1 = New Label(HBox1)
  21.     .H = 28
  22.     .W = 35
  23.     .Alignment = Align.Center
  24.     .Text = " = "
  25.   End With
  26.  
  27.   With LabelRomanOut = New Label(HBox1) As "LabelRomanOut"
  28.     .H = 28
  29.     .Border = Border.Plain
  30.     .Expand = True
  31.     .Font = Font["freeserif,12,bold"]
  32.   End With
  33.  
  34.   Panel1 = New Panel(Me)
  35.   Panel1.H = 7
  36.  
  37.   HBox3 = New HBox(Me)
  38.   HBox3.H = 28
  39.  
  40.   With TextBoxRomanIn = New TextBox(HBox3) As "TextBoxRomanIn"
  41.     .H = 28
  42.     .Expand = True
  43.     .Font = Font["freeserif,12,bold"]
  44.   End With
  45.  
  46.   With Label3 = New Label(HBox3)
  47.     .H = 28
  48.     .W = 35
  49.     .Alignment = Align.Center
  50.     .Text = " = "
  51.   End With
  52.  
  53.   With LabelArabOut = New Label(HBox3) As "LabelArabOut"
  54.     .H = 28
  55.     .W = 80
  56.     .Border = Border.Plain
  57.     .Alignment = Align.Right
  58.   End With
  59.  
  60.   With HBox2 = New HBox(Me)
  61.     .H = 28
  62.     .Invert = True
  63.   End With
  64.  
  65.   With Label2 = New Label(HBox2)
  66.     .H = 28
  67.     .AutoResize = True
  68.     .Alignment = Align.BottomRight
  69.     .Text = "Charlie Ogier Software V1.0.0"
  70.   End With
  71.  
  72. En


Pero a mi ese Form Open me sale tal que asi :
[Imagen: Captura-de-ecr-2021-03-19-15-27-02.png]

Y en efecto en tu video veo que sale bien a la primera.

Ya intente hacer un uevo proyecto marcando pryecto gtk y sigue igual, seguro es algo que hago yo mal.


RE: Conversor numero romano a arabico o arabico a romano - vuott - 19-03-2021

...solo para señalar estos temas:

   https://foro.gambas-es.org/viewtopic.php?f=1&t=695

   https://foro.gambas-es.org/viewtopic.php?f=5&t=7918