Foros del Web » Programación para mayores de 30 ;) » .NET »

Ayuda buscando fallo en código procedimiento - Visual Basic 2005

Estas en el tema de Ayuda buscando fallo en código procedimiento - Visual Basic 2005 en el foro de .NET en Foros del Web. Hola de nuevo, Tengo que terminar un ejercicio de Visual Basic para el lunes, en todo el programa, he desarrollado una función que muestra por ...
  #1 (permalink)  
Antiguo 12/06/2010, 11:07
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 15 años, 4 meses
Puntos: 0
Ayuda buscando fallo en código procedimiento - Visual Basic 2005

Hola de nuevo,

Tengo que terminar un ejercicio de Visual Basic para el lunes, en todo el programa, he desarrollado una función que muestra por pantalla los alumnos que tienen una nota superior o inferior a la que se le pase como parámetro.
El caso es que no funciona bien... y por más que le doy vueltas no encuentro el error... alguien puede verlo y ayudarme?

Código:
Public Sub mostrarpornota(ByRef corte As Integer, ByRef porencima As Boolean)
        If listalumnos.Count > 0 Then 'Si hay alumnos...
            Dim i, j As Integer 'Creamos dos variables contador, j por si existen notas
            Dim total As Double = 0 'Creamos una memoria donde almacenar la suma de las notas.
            Dim media As Double = 0 'y otra para calcular la media
            Dim textoencima As String = "Alumnos con nota superior a " & corte & ": " & vbNewLine
            Dim textoabajo As String = "Alumnos con nota inferior a " & corte & ": " & vbNewLine

            For i = 0 To listalumnos.Count - 1 'recorremos el arraylist de empleados
                total = 0 'inicializamos las variables en cada alumno.
                media = 0
                If listalumnos(i).listanotas.Count > 0 Then 'Si hay registradas notas...
                    For j = 0 To listalumnos(i).listanotas.Count - 1 'recorremos el arraylist de notas..
                        total = total + listalumnos(i).listanotas(j) ' las sumamos
                        media = total / listalumnos(i).listanotas.Count ' y sacamos la media
                        If media >= corte Then ' si la media está igual o por encima del corte fijado
                            textoencima = textoencima & "- Nombre: " & listalumnos(i).nombre & " Nota media: " & media & vbNewLine 'guardamos aquí
                        Else 'si no...
                            textoabajo = textoabajo & "- Nombre: " & listalumnos(i).nombre & " Nota media: " & media & vbNewLine ' aquí
                        End If
                    Next
                End If
            Next
            If porencima = True Then 'Si lo que se quiere son las notas por encima del corte
                MessageBox.Show(textoencima, "Alumnos sobre " & corte) 'Sacamos mensaje por pantalla
            Else 'si son las que hay por debajo...
                MessageBox.Show(textoabajo, "Alumnos bajo " & corte)
            End If
        Else 'Si no hay empleados...
            MessageBox.Show("No hay empleados", "Error") 'no hay por qué hacer todo lo otro.
        End If

    End Sub
Agradecería mucho la ayuda, ya tengo la cabeza bastante sobrecargada, pero no puedo parar hasta que acabe

Saludos
  #2 (permalink)  
Antiguo 13/06/2010, 04:37
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda buscando fallo en código procedimiento - Visual Basic 2005

Vamos, nadie puede echarme una mano?
  #3 (permalink)  
Antiguo 13/06/2010, 05:07
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda buscando fallo en código procedimiento - Visual Basic 2005

Ya lo resolví. Todavía no me he parado a comparar para encontrar donde estaba el problema...
He desarrollado el procedimiento de nuevo, desde cero... y ahora funciona.

Es este:

Public Sub mostrarpornota(ByRef corte As Integer, ByRef porencima As Boolean)
Dim i, j As Integer
Dim suma As Double = 0
Dim media As Double = 0
Dim textomas As String = "Alumnos que superan el " & corte & ":" & vbCr
Dim textomenos As String = "Alumnos con nota inferior a " & corte & ":" & vbCr

For i = 0 To listalumnos.Count - 1
For j = 0 To listalumnos(i).listanotas.Count - 1
suma = suma + listalumnos(i).listanotas(j)
Next
media = suma / listalumnos(i).listanotas.Count()
If media >= corte Then
textomas = textomas & "Nombre: " & listalumnos(i).nombre & ". Nota media: " & media & vbCr
Else
textomenos = textomenos & "Nombre: " & listalumnos(i).nombre & ". Nota media: " & media & vbCr
End If
suma = 0
media = 0
Next
If porencima = True Then
MessageBox.Show(textomas, "Informe")
Else
MessageBox.Show(textomenos, "Informe")
End If


End Sub

Lo posteo por si sirve de referencia a alguien.

Etiquetas: basic, fallo, procedimiento, visual, buscadores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:44.