Autor |
Mensaje |
guadafan
Aprendiz
Registrado: Agosto 2012
Mensajes: 81
Edad: 49 Ubicación: Alcalá de Guadaira (Sevilla)
|
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.
Descripción: |
|
Descargar |
Nombre del archivo: |
Calculadora-0.0.1.tar.gz |
Tamaño: |
5.71 KB |
Descargado: |
26 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
Calculadora-0.0.1.tar.gz |
Tamaño: |
5.71 KB |
Descargado: |
26 veces |
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
|
#1 Domingo, 20 Septiembre 2015, 09:01 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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"
|
#2 Domingo, 20 Septiembre 2015, 09:24 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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
|
#3 Domingo, 20 Septiembre 2015, 09:49 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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"
|
#4 Domingo, 20 Septiembre 2015, 09:54 |
|
|
guadafan
Aprendiz
Registrado: Agosto 2012
Mensajes: 81
Edad: 49 Ubicación: Alcalá de Guadaira (Sevilla)
|
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?
|
#5 Domingo, 20 Septiembre 2015, 11:23 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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:
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"
|
#6 Domingo, 20 Septiembre 2015, 12:09 |
|
|
guadafan
Aprendiz
Registrado: Agosto 2012
Mensajes: 81
Edad: 49 Ubicación: Alcalá de Guadaira (Sevilla)
|
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?
Descripción: |
|
Descargar |
Nombre del archivo: |
Calculadora-0.0.1.tar.gz |
Tamaño: |
6.14 KB |
Descargado: |
25 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
Calculadora-0.0.1.tar.gz |
Tamaño: |
6.14 KB |
Descargado: |
25 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
Calculadora-0.0.1.tar.gz |
Tamaño: |
6.14 KB |
Descargado: |
25 veces |
|
#7 Domingo, 20 Septiembre 2015, 12:22 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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 ?.
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"
|
#8 Domingo, 20 Septiembre 2015, 13:19 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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"
|
#9 Domingo, 20 Septiembre 2015, 13:30 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Problema Con Conversión De Datos De String A Single
Hola guadafan,
ya que estas dos routine:
son dos simples " Procedure" y no regresan nada, es más correcto eliminar las palabras " As Single ".
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
|
#10 Domingo, 20 Septiembre 2015, 16:49 |
|
|
|