Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Lidiando Con Calculadoras
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Lidiando Con Calculadoras 
 
Hola, estoy intentando hacer una calculadora que parezca una calculadora, o sea, con el mismo comportamiento, ya que no he encontrado ninguna para linux que sea así (si sabéis de alguna comentadlo, please). Es para enseñar a usarla a los niños. Las que hay son de las que puedes escribir 5+3+5 en pantalla, cuando eso en una calculadora normal no es posible.

A la primera de cambio me he topado con un problema de cambio de tipos, sólo he hecho de momento la suma, cuando quiero hacer una suma de números decimales, me dice que espera un Single y que le he dado un String, cuando precisamente lo que quiero hacer es cambiar de string a single.

O sea, para reproducir el error: pulso "3,2" luego "+" luego "5" y luego de nuevo "+"

Adjunto el archivo por si alguien tiene tiempo de echarle un vistazo.

Calculadora-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: Calculadora-0.0.1.tar.gz
Tamaño: 5.71 KB
Descargado: 26 veces
Calculadora-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: Calculadora-0.0.1.tar.gz
Tamaño: 5.71 KB
Descargado: 26 veces
Calculadora-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: Calculadora-0.0.1.tar.gz
Tamaño: 5.71 KB
Descargado: 26 veces

 



 
última edición por guadafan el Lunes, 21 Septiembre 2015, 06:38; editado 1 vez 
guadafan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Conversión De Datos De String A Single 
 
Hola Guadafan.

A mi ya me da error con solo aplicar el operador "+", después del 3.2.
Seguiré mirando.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Conversión De Datos De String A Single 
 
Tienes un problema con la coma "," para operar necesitas que sea "."

Para empezar añade al comienzo del procedimiento "opera" estás dos lineas:

If InStr(num1, ",") <> 0 Then num1 = Replace(num1, ",", ".")
If InStr(num2, ",") <> 0 Then num2 = Replace(num2, ",", ".")
 


Son dos lineas que se repite y pueden que necesite una pequeña optimización.

Aunque hace el trabajo, al darle al operador "+" no espera a la entrada de num2.
Te lo presenta como un número largo con decimales.

Tienes que acostumbrarte en este caso a usar una matriz de controles para los números y los operadores.
Te sera más fácil y ahorraras tantos procedimientos por números y operadores.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Domingo, 20 Septiembre 2015, 09:53; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Conversión De Datos De String A Single 
 
La calculadora del sistema hace lo que quieres hacer, pero para aprender es bueno que lo hagas tu mismo.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Conversión De Datos De String A Single 
 
Gracias Shell, miraré por qué salta al número 2 al pulsar la "," en principio traté a la coma como si fuera un número más.

No sé a qué te refieres con la calculadora del sistema ¿a cuál te refieres?
 



 
guadafan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Conversión De Datos De String A Single 
 
Hola!.

Citar:

No sé a qué te refieres con la calculadora del sistema ¿a cuál te refieres?


A que el propio sistema operativo Linux incorpora calculadoras que te muestran en pantalla los operandos y los operadores.
Ejemplo:

 mostrarcalculos

 

Pero nunca sera lo mismo a que tu te hagas tu propia calculadora como práctica en Gambas.
Espero tus avances.
 
Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Conversión De Datos De String A Single 
 
Shell, es que precisamente eso es lo que no quiero, que muestre las operaciones en la pantalla, ya que las calculadoras normales de mano no hacen eso, como mucho te muestran un número cada vez. Píllate una, verás a lo que me refiero.

Bueno, ésta ya va cogiendo color, la adjunto.

Ahora tengo otro problemilla, necesitaría limitar el número de dígitos que salen por ejemplo en raíces cuadradas o en divisiones inexactas ¿Cómo podría hacerlo? ¿Hay alguna forma de truncar los números?

Calculadora-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: Calculadora-0.0.1.tar.gz
Tamaño: 6.14 KB
Descargado: 25 veces
Calculadora-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: Calculadora-0.0.1.tar.gz
Tamaño: 6.14 KB
Descargado: 25 veces
Calculadora-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: Calculadora-0.0.1.tar.gz
Tamaño: 6.14 KB
Descargado: 25 veces

 



 
guadafan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Conversión De Datos De String A Single 
 
Citar:

Ahora tengo otro problemilla, necesitaría limitar el número de dígitos que salen por ejemplo en raíces cuadradas o en divisiones inexactas ¿Cómo podría hacerlo? ¿Hay alguna forma de truncar los números?


¿ Te refieres a limitar por ejemplo el número de decimales ?.

Public Sub Main()
Dim numero1 As String
Dim numero2 As String

numero1 = "12.5678"

'En numero2 quiero que solo se muestren dos decimales"
numero2 = Format(numero1, "-#.##")
Print numero2
'12,57

End
 


Formato definido por el usuario

Hice un ejemplo de calculadora muy pequeño, pero no voy a subirlo ni a preguntar una cuestión que tengo hasta que tu no termines la calculadora.
Además te valdrá para la tuya. Realmente cuando empezamos con el diseño de una calculadora no conocemos aun "eso". ( Es una sorpresa ).  

A pesar de que el código ha quedado en el ejemplo que hice, super reducido, tengo un problema, que comentare cuando tu acabes la practica.
La verdad es que no es mal ejercicio como reto de programación.

Compañeros, los que sabéis de lo que hablo ( la sorpresa ) no la destapéis todavía. Son cosas que los programadores aprendemos con el tiempo.
No son siempre necesaria, pero ayudan..Shhhh...

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Conversión De Datos De String A Single 
 
Por cierto, en tu segundo ejemplo, no intentas mostrar los operadores.  ¿ Es así como la quieres ?.  
Es como se vería en una calculadora de las de toda la vida.

Esta funcionando bien. Cuando resuelvas el problema de los decimales, a ver que nos cuentas.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Conversión De Datos De String A Single 
 
Hola guadafan,

ya que estas dos routine:
Public Sub escribenumero1(bttext As String) As Single
  If num1 = "" Then 'si no hay número 1 aún
    lb.Text = ""
  Endif
  If op = "" Then 'si no se pulsó aún en ninguna operación se van añadiendo números a la pantalla según se teclean
    lb.Text &= bttext
    num1 = lb.Text
 
  Endif
  
End

Public Sub escribenumero2(bttext As String) As Single
    lb.Text &= bttext
    num2 = lb.Text
End

son dos simples "Procedure" y no regresan nada, es más correcto eliminar las palabras " As Single ".



guadafan escribió: [Ver mensaje]
necesitaría limitar el número de dígitos que salen por ejemplo en raíces cuadradas o en divisiones inexactas ¿Cómo podría hacerlo? ¿Hay alguna forma de truncar los números?

Tú tienes al menos 4 posibilidades (una ya fue descrita por Shell):

http://www.gambas-it.org/wiki/index...un_valore_Float
 



 
última edición por vuott el Domingo, 20 Septiembre 2015, 16:57; editado 2 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 2 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron