Lidiando Con Calculadoras


Ir a la página 1, 2  Siguiente

Objetivo: 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.

última edición por guadafan el Lunes, 21 Septiembre 2015, 06:38; editado 1 vez

Calculadora-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: Calculadora-0.0.1.tar.gz
Tamaño: 5.71 KB
Descargado: 27 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: 27 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: 27 veces

Objetivo: 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

Objetivo: 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

última edición por Shell el Domingo, 20 Septiembre 2015, 09:53; editado 1 vez
Objetivo: 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.

Objetivo: 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?

Objetivo: 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

Objetivo: 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: 26 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: 26 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: 26 veces

Objetivo: 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

Objetivo: 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.

Objetivo: 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
Perfil MP  
Ir a la página 1, 2  Siguiente

Página 1 de 2


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4112s (PHP: -78% SQL: 178%)
Consultas SQL: 49 - Debug off - GZIP Activado