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
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 .
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.
[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:
- 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
Pero a mi ese Form Open me sale tal que asi :
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
|