vb en aplicacion consola

Iniciado por chrisstine2975, 16 Mayo 2012, 07:38 AM

0 Miembros y 1 Visitante están viendo este tema.

chrisstine2975

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.....


kub0x

#1
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

Código (VB.NET) [Seleccionar]

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)
Código (VB.NET) [Seleccionar]

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.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


chrisstine2975

gracias!! lo reviso y les cuento!!! :P

chrisstine2975

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()

$Edu$

Código (vbnet) [Seleccionar]

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

chrisstine2975

jajaja... gracias por la ayuda lo pruebo mañana y les cuento.... ;-)