Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/06/2010, 11:07
buckcherry
 
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