Visual Basic - Problema de matemáticas

Life is soft - evento anual de software empresarial
 
Vista:

Problema de matemáticas

Publicado por Santi (6 intervenciones) el 30/04/2018 00:27:22
Buenas noches tengo un problema de matemáticas y quería resolverlo con vb. Tenemos 4 textbox para ingresar números y al apretar un botón debe realizar todas las operaciones posibles, es decir: suma resta multiplicación y división de todas las combinaciones posibles (el orden sí importa) y mostrar los resultados en un listbox.
No sé utilizando alguna matriz se podrá resolver
Estoy bastante perdido y agradecería cualquier ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema de matemáticas

Publicado por Antoni Masana (558 intervenciones) el 30/04/2018 08:42:23
No se cual es el problema.
Tienes que realizar 12 sumas, 12 restas, 12 multiplicaciones y 12 divisiones, en total 48 orpaciones.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema de matemáticas

Publicado por Santi (6 intervenciones) el 30/04/2018 13:13:02
Buenas tardes y muchas gracias por responder. Si tenemos 4 números a b c d, por cada par de números hay 6 operaciones posibles, (a+b, a-b, a*b, a/b, b/a, b-a). Son 216 operaciones 6^3. Crees que se podrá resolver con código?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema de matemáticas

Publicado por Santi (6 intervenciones) el 30/04/2018 16:18:36
Voy lento con esto porque estoy trabajando pero creo lo mejor será ir de 2 en 2 ya que son muchísimas operaciones
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema de matemáticas

Publicado por Antoni Masana (558 intervenciones) el 30/04/2018 16:29:59
Veamos que yo sepa hay 4 operaciones básicas posibles :

1
2
3
4
SUMAR
RESTAR
DIVIDIR
MULTIPLICAR

Te pongo el desglose de las convinaciones posibles. En negrita tus " 6 operaciones posibles "

1
2
3
4
5
6
7
8
9
10
11
12
13
A+B       A-B       A/B       A*B
A+C       A-C       A/C       A*C
A+D       A-D       A/D       A*D
B+A       B-A       B/A       B*A
B+C       B-C       B/C       B*C
B+D       B-D       B/D       B*D
C+A       C-A       C/A       C*A
C+B       C-B       C/B       C*B
C+D       C-D       C/D       C*D
D+A       D-A       D/A       D*A
D+B       D-B       D/B       D*B
D+C       D-C       D/C       D*C
Sumar     Restar    Dividir   Multiplicar

A mi me salen 12 convinaciones en cada operación por 4 signos son 48 operaciones posibles

Si además añades el número por si mismo son 64 operaciones posibles en total

1
2
3
4
A+A       A-A       A/A       A*A
B+B       B-B       B/B       B*B
C+C       C-C       C/C       C*C
D+D       D-D       D/D       D*D

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Problema de matemáticas

Publicado por Santi (6 intervenciones) el 30/04/2018 16:46:58
Vale, pero sería ingresar 4 números y averiguar todos los resultados entre ellos y no solo por parejas, es decir siempre hay 4 operandos: A+B+C+D, A+B+C-D, A+B+C*D, A+B+C/D, etc
Siempre de a cuatro. Esto da 5184 posibles resultados.
Crees que será muy difícil manejar esto con código?
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema de matemáticas

Publicado por Antoni Masana (558 intervenciones) el 30/04/2018 20:18:53
A mi me salen ahora unos cuantos más

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Convinaciones de 2 numeros con repetición
 
Números * Signos * Números         Total
      4 *      4 *       4 = 4^3 =    64
 
Convinaciones de 3 Numeros con repetición
 
Números * Signos * Números * Signos * Números         Total
      4 *       4 *      4 *       4 *      4 = 4^5 =  1024
 
 
Convinaciones de 4 numeros con repetición
 
Números * Signos * Números * Signos * Números * Signos * Números         Total
      4 *      4 *       4 *      4 *       4 *      4 *       4 = 4^7 = 16384
 
 
En total 17472

¿Se puede hacer? Si, el primero es fácil, para el segundo y el tercero se debe tener en cuenta la prioridad de las operaciones.

¿Como se hace? nNo lo se y no tengo ningún interes es saberlo, si lo haces y no te funciona te ayudo, pero empieza a pensarlo tu.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Problema de matemáticas

Publicado por Santi (6 intervenciones) el 30/04/2018 21:15:39
Buenas noches, muchas gracias por la ayuda. Así mismo lo estaba intentando, cómo bien dices el primer paso es sencillo de hacer pero se me complica para tomar en cuenta estos resultados y seguir a partir de ahí. El fin de semana retomaré esto. Muchas gracias nuevamente!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de gilman
Val: 594
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema de matemáticas

Publicado por gilman (359 intervenciones) el 01/05/2018 11:31:50
Entiendo que los operadores se pueden repetir, no así los operandos, si es así en un form pon 4 textbox, y un commandbutton, no cambies los nombres originales y añade el código
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Option Explicit
 
Private Elem(1 To 4) As String
Private Ops(1 To 4) As String
 
Private Sub Calcular()
    Dim e1 As Long, e2 As Long, e3 As Long, e4 As Long
    Dim o1 As Long, o2 As Long, o3 As Long
 
    Dim s As String
    Dim sc As Object
    Set sc = CreateObject("ScriptControl")
    sc.Language = "VBScript"
    For e1 = 1 To 4
        'primer operando.
        s = Elem(e1)
        For o1 = 1 To 4
            s = s & Ops(o1)
            For e2 = 1 To 4
                'el bloque if solo es si no se puede repetir el operando
                If e2 <> e1 Then
                    s = s & Elem(e2)
                    For o2 = 1 To 4
                        s = s & Ops(o2)
                        For e3 = 1 To 4
                            If e3 <> e1 And e3 <> e2 Then
                                s = s & Elem(e3)
                                For o3 = 1 To 4
                                    s = s & Ops(o3)
                                    For e4 = 1 To 4
                                        If e4 <> e1 And e4 <> e2 And e4 <> e3 Then
                                            s = s & Elem(e4)
                                            's contiene la expresión a evaluar.
                                            Debug.Print s & " = " & sc.Eval(s)
                                            s = Left(s, Len(s) - Len(Elem(e4)))
                                        End If
                                    Next e4
                                    s = Left(s, Len(s) - 1)
                                Next o3
                                s = Left(s, Len(s) - Len(Elem(e3)))
                            End If
                        Next e3
                        s = Left(s, Len(s) - 1)
                    Next o2
                    s = Left(s, Len(s) - Len(Elem(e2)))
                End If
            Next e2
            s = Left(s, Len(s) - 1)
        Next o1
        s = ""
    Next e1
End Sub
 
 
Private Sub Command1_Click()
    Elem(1) = Str(CDbl(Text1.Text))
    Elem(2) = Str(CDbl(Text2.Text))
    Elem(3) = Str(CDbl(Text3.Text))
    Elem(4) = Str(CDbl(Text4.Text))
    Calcular
 
End Sub
 
Private Sub Form_Load()
    'Cargar los operadores
    Ops(1) = "+"
    Ops(2) = "-"
    Ops(3) = "*"
    Ops(4) = "/"
 
End Sub
Ten en cuenta que el código espera que se respete la configuración regional del PC, y que no hay ningún control de errores.
Si los operandos se pueden repetir se deberían eliminar las sentencias if que lo controlan
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema de matemáticas

Publicado por santi (6 intervenciones) el 01/05/2018 23:05:48
ohhh fantastico, no podia continuar pasada la primer etapa ahora con esto lograste poder cambiar los operadores completamente. Ahora intentaré que cambien los operandos tambien ya que solo toma el del textbox4 como primer operando. Muchisimas gracias por la gran ayuda !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar