Visual Basic - Sumar variable consigo misma n veces hasta que c=0

Life is soft - evento anual de software empresarial
   
Vista:
Imágen de perfil de nano

Sumar variable consigo misma n veces hasta que c=0

Publicado por nano (3 intervenciones) el 26/07/2015 08:01:28
Muy buenas a todos!!
Mi duda entiendo que es ciertamente básica, pero no doy con ella, y por eso recurro a vosotros.
Tengo dos textbox: uno donde se introduce un importe y otro donde se introduce un codigo c que va de 0 a 3.
Mientras el codigo sea 1, 2 o 3 el importe se va sumando con el importe anterior de tal modo que la ejecución finalice
cuando codigo=0 y muestre la suma de importe de codigo1, la de codigo2 y la del codigo3 así como un total de la suma de todos.
He probado con do while pero me hace un bucle infinito y no se detiene la aplicación. Y la otra duda es que no me suma los importes de cada código sino que me los muestra en un label, uno detrás de otro.
Si me podeis ayurdar, os lo agradecería.
Un saludo,
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

Sumar variable consigo misma n veces hasta que c=0

Publicado por Rafael (65 intervenciones) el 27/07/2015 08:45:52
Puedes poner tu codigo, asi vemos donde estan los errores... y te ayudamos.

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

Sumar variable consigo misma n veces hasta que c=0

Publicado por LUIS A. FRANCO R. (68 intervenciones) el 27/07/2015 23:50:17
Explicate mejor amigo para poder ayudarte.
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 nano

Sumar variable consigo misma n veces hasta que c=0

Publicado por nano (3 intervenciones) el 28/07/2015 08:35:03
Muy buenas a ambos...
La suma como tal ya la tengo solucionada. Pero ahora me surge otra duda a la hora de mostrar los datos y es la siguiente:
Tengo este ejercicio:
En el club “Futbolito” se ha organizado un torneo interno de fútbol en la categoría menores. Participarán n equipos, cada uno de ellos participará en seis (6) encuentros. Se necesita generar un programa que, al finalizar el torneo, permita ingresar: nombre del equipo, cantidad de partidos ganados, empatados y perdidos.
A partir de los datos ingresados, se deberá obtener para cada equipo el puntaje obtenido en el campeonato, teniendo en cuenta que la asociación otorga:
Condición Puntos
Partido Ganado 3
Partido Empatado 1
Partido Perdido 0
Al finalizar el proceso, se debe indicar:
a) Clasificación.
b) El puntaje más alto y más bajo.


Mi planteamiento ha sido el siguiente:


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
Public Class Form1
    Dim equipo() As String
    Dim pg() As Integer
    Dim pe() As Integer
    Dim pp() As Integer
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Call añadirdatos()
    End Sub
    Private Sub añadirdatos()
        ReDim Preserve equipo(UBound(equipo) + 1)
        equipo(UBound(equipo)) = InputBox("Introduce nombre del equipo", "EQUIPO")
        Call pganados()
    End Sub
    Private Sub pganados()
        ReDim Preserve pg(UBound(pg) + 1)
        pg(UBound(pg)) = InputBox("Introduce partidos ganados")
        Call pempatados()
    End Sub
    Private Sub pempatados()
        ReDim pe(UBound(pe) + 1)
        pe(UBound(pe)) = InputBox("Introduce partidos empatados")
        Call pperdidos()
    End Sub
    Private Sub pperdidos()
        ReDim Preserve pp(UBound(pp) + 1)
        pp(UBound(pp)) = InputBox("Introduce partidos perdidos")
    End Sub
 
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        LabelR.Text = ""
        Dim puntos As Byte
        Dim i As Integer
        Labelteam.Text = vbCrLf
        LabelPG.Text = "PGan" & vbCrLf
        LabelPE.Text = "PEmp" & vbCrLf
        Labelpp.Text = "PPer" & vbCrLf
        For i = 1 To UBound(equipo)
            puntos = pg(i) * 3 + pe(i) * 1
            LabelR.Text = LabelR.Text & equipo(i) & "........." & puntos & " puntos." & vbCrLf
            Labelteam.Text = Labelteam.Text & equipo(i) & vbCrLf
            LabelPG.Text = LabelPG.Text & pg(i) & vbCrLf
            LabelPE.Text = LabelPE.Text & pe(i) & vbCrLf
            Labelpp.Text = Labelpp.Text & pp(i) & vbCrLf
        Next i
    End Sub
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        ReDim equipo(0)
        ReDim pg(0)
        ReDim pe(0)
        ReDim pp(0)
    End Sub
 
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Me.Close()
 
    End Sub
End Class

En la imagen adjunta veis como me aparece el resultado

futbito

La duda es la siguiente...
Como podria hacer para que me mostrara el listado de los equipos ordenado por sus puntos de forma descendente? Pues el listado que tengo me aparece en el mismo orden que lo he introducido.
Y por último, como podria justicar el listado tanto por la derecha como por la izquierda?
Muchas 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

Sumar variable consigo misma n veces hasta que c=0

Publicado por Rafael (65 intervenciones) el 28/07/2015 10:46:48
Una de genio malvado ...

A ver te doy una solución pero que te pondrá a currar un rato:
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
Public Sub Test()
 
    Resultados = Array(Array("Pozuelo", 3, "2", "1", 11), _
                       Array("Aluche", 2, "2", "2", 8), _
                       Array("San Blas", 2, "3", "1", 9), _
                       Array("Atocha", 3, 2, 1, 10), _
                       Array("Alcala", 4, 0, 2, 12), _
                       Array("Boadilla", 5, 0, 1, 15), _
                       Array("Isla Azul", 3, 3, 0, 12))
 
    Sorted = False
    Do While Not Sorted
        Sorted = True
        For x = 0 To UBound(Resultados) - 1
            If Resultados(x)(4) < Resultados(x + 1)(4) Then
                Temp = Resultados(x + 1)
                Resultados(x + 1) = Resultados(x)
                Resultados(x) = Temp
                Sorted = False
            End If
        Next x
    Loop
 
    For x = 0 To UBound(Resultados)
        repcar = IIf(Len(Resultados(x)(0)) >= 8, 2, 3)
        Debug.Print Resultados(x)(0) & String$(repcar, vbTab) & Resultados(x)(4)
    Next x
End Sub

Como verás el código que te propongo parte del hecho que tienes un Array de Arrays con los resultados,
He usado el Orden que propones y he sumado mas partidos (6)...

Creo que con lo que tienes y esto código podras inferir como debes llenar ese Array de Arrays, luego lo ordeno en el while, la lógica es muy simple.

Y a la hora de imprimirlo en el debug agrego tabuladores dependiendo del largo del texto, para tenerlo ordenadito mir a:
Imagen

Seguro que con esto y un bizcocho estas hecho...

Ya nos contaras saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de nano

Sumar variable consigo misma n veces hasta que c=0

Publicado por nano (3 intervenciones) el 28/07/2015 18:11:39
Muchas gracias Rafael!!
Te lo has currado a conciencia. Ahora necesito digerir el codigo que me has enviado, pues de primeras no pillo nada!!
jejejejeje...
De nuevo, muchas gracias!!!
Ahora al tajo!!
Un saludo,
Nano.
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