hola! soy nueva por aqui y estoy aprendiendo visual basic, se que para muchos esto resultara facil, pero yo no logro entender porque no me da el resultado adecuado.
si alguien me puede indicar que estoy haciendo mal, para poder corregir... estamos viendo arreglos en 2d..
este es el problema y lo que tengo hasta ahorita
. Se tienen las estaturas del grupo de estudiantes de programación 2, grupo 03 y se desea por medio de un programa encontrar la estatura más alta, la más baja y el promedio de estaturas del grupo.
2. Sub Main()
3. Dim estudiantes, suma, promedio, may, menor As Double
4. Console.WriteLine("cuantos estudiantes desea ingresar:")
5. estudiantes = Console.ReadLine
6. Dim estatura(estudiantes) As Double
7. Dim i As Integer
8. For i = 0 To estudiantes - 1
9. Console.WriteLine("ingrese la estatura del estudiante:" & i + 1)
10. estatura(estudiantes) = Console.ReadLine
11. suma = estatura(estudiantes) + suma
12. Next
13.
14. may = 0
15. For i = 0 To estatura(estudiantes)
16. If estatura(estudiantes) >= may Then
17. may = estatura(i)
18. End If
19.
20. Next
21. menor = 0
22. For i = 0 To estatura(estudiantes)
23. If estatura(estudiantes) < menor Then
24. menor = estatura(estudiantes)
25. End If
26. Next
27. promedio = suma / estudiantes
28.
29. Console.WriteLine(" el Mayor de la estatura es de:" & may)
30. Console.WriteLine(" el Menor de la estatura es de:" & menor)
31. Console.WriteLine(" el promedio de la estatura es de:" & promedio)
32. Console.ReadLine()
33.
34.
35.
36. End Sub
lo que me esta fallando es que no logro encontrar la estatura menor y mayor, el promedio si me funciona.....
Para la próxima postea en el subforo correcto y colorea el código con la etiqueta GeShi que encontraras en el editor de mensajes.
Bueno, tu error está en que no declaras bien la forma en la que recorres los For de Mayor/Menor Estatura. Es decir, tu haces lo siguiente
may = 0
For i = 0 To estatura(estudiantes)
If estatura(estudiantes) >= may Then
may = estatura(i)
End If
Next
menor = 0
For i = 0 To estatura(estudiantes)
If estatura(estudiantes) < menor Then
menor = estatura(estudiantes)
End If
Next
Ahí lo que haces es ir desde 0 hasta el valor de la matriz Estatura en el indice Estudiantes, donde Estudiantes será el valor que ingresaste al principio.
Para recorrer bien el For, hazlo de la siguiente manera :D (Como hiciste al principio)
For i = 0 To estudiantes - 1
If estatura(i) >= may Then
may = estatura(i)
End If
next
Tienes más errores, pero derivan de lo que te he explicado. Corrigelos y nos cuentas :)
Saludos.
gracias!! lo reviso y les cuento!!! :P
ya lo revise.... pero no logro dar con que pasa..... :huh:
lo corregi pero ahora me funciona el promedio pero no me funciona el menor ni mayor.....
Dim estudiantes, suma, promedio, may, menor As Double
Console.WriteLine("cuantos estudiantes desea ingresar:")
estudiantes = Console.ReadLine
Dim estatura(estudiantes) As Double
Dim i As Integer
For i = 0 To estudiantes - 1
Console.WriteLine("ingrese la estatura del estudiante:" & i + 1)
estatura(estudiantes) = Console.ReadLine
suma = estatura(estudiantes) + suma
Next
may = 0
For i = 0 To estudiantes - 1
If estatura(i) >= may Then
may = estatura(i)
End If
Next
menor = 0
For i = 0 To estudiantes - 1
If estatura(i) < menor Then
menor = estatura(i)
End If
Next
promedio = suma / estudiantes
Console.WriteLine(" el Mayor de la estatura es de:" & may)
Console.WriteLine(" el Menor de la estatura es de:" & menor)
Console.WriteLine(" el promedio de la estatura es de:" & promedio)
Console.ReadLine()
Dim estudiantes, suma, promedio, may, menor As Double
Console.WriteLine("cuantos estudiantes desea ingresar: ")
estudiantes = Console.ReadLine
Dim estatura(estudiantes) As Double
Dim i As Integer
For i = 0 To estudiantes - 1
Console.WriteLine("ingrese la estatura del estudiante " & Cstr(i + 1) & ": ")
estatura(i) = Console.ReadLine
suma = estatura(i) + suma
Next
may = 0
For i = 0 To estudiantes - 1
If estatura(i) >= may Then
may = estatura(i)
End If
Next
menor = 0
For i = 0 To estudiantes - 1
If estatura(i) < menor Then
menor = estatura(i)
End If
Next
promedio = suma / estudiantes
Console.WriteLine(" el Mayor de la estatura es de:" & may)
Console.WriteLine(" el Menor de la estatura es de:" & menor)
Console.WriteLine(" el promedio de la estatura es de:" & promedio)
Console.ReadLine()
Asi tendria que andar... lo que no se es si en vb.net se usa Cstr(integer) o sino anda le haces (i + 1).ToString()
Y lo otro es que en vb6 cuando pones array(6) ese 6 no es la cantidad, sino el ultimo valor, por lo que habria 7 estudiantes, pero no se en vb.net si cambia eso, esto lo miras si aprendes a debuggear tu programa, poniendo Break Points y viendo como va aumentando la variable del bucle y como va funcionando tu codigo, asi le encuentras el error facil, mas en esto que son pocas lineas.
Despues lo de menor o mayor, fijate bien que es lo que queres, ya que puede que algunos midan lo mismo de altura y el ultimo que se ingrese de esos que miden igual, sera el mayor si es que no hay otro mayor aun. Es decir, de los mayores, si hay mas de 1 con la misma altura, se guardara como mayor el ultimo que se ingrese.
Pero para lo de el menor no, asi que tienes que ver eso, tal vez hasta puedes hacer que te diga: "Hay X mayores.. son: ...", dejarias de boca abierta al profesor jeje
jajaja... gracias por la ayuda lo pruebo mañana y les cuento.... ;-)