estructuras selectivas

Iniciado por leliCabello, 27 Marzo 2010, 19:26 PM

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

leliCabello

qtal amigos ps quiero que me yuden con esto, es que no se como usar en este ejemplo el select case, ya que me dan una tabla indicando los años,meses y tambien hombre mujeres, para esto lo estaba poniendo como genero, para que ingresen como femenino y masculino, abajo esta el enunciado para q me entiendadn mejor

Imports System.Console
Module Module6
    Sub main()
        Title = "Nivel de Hemoglobina"
        ForegroundColor = ConsoleColor.Cyan

        'variables
        Dim edad#, genero$, nivelhemoglobina#
        Dim mes$
        'entradas
        Write("Ingresar su edad: ") : edad = ReadLine()
        Write("Ingresar su género: ") : genero = ReadLine()
        Write("Ingresar su nivel de Hemoglobina: ") : nivelhemoglobina = ReadLine()

        'proceso

        Select Case edad
            Case 0 To 1 : nivelhemoglobina = 13
            Case > 1 and <=6 :nivelhemoglobina=10
            Case > 6 and < = 12 años : nivelhemoglobina=11
            Case > 1 and < = 5 años : nivelhemoglobina=11.5
            Case > 5 and < = 10 años : nivelhemoglobina=12.6
            Case > 10 and < = 15 años : nivelhemoglobina=13
            Case mujeres > 15 años : nivelhemoglobina=12
            Case hombres > 15 años : nivelhemoglobina=14

                'Tomando como base los resultados obtenidos en un laboratorio de
                'análisis clínicos, un medico determina si una persona tiene anemia
                'o no, lo cual depende de su nivel de hemoglobina en la sangre, de su edad
                ' y de su sexo. Si el nivel de hemoglobina que tiene una persona es menor que
                ' el rango que le corresponde, se determina su resultado como positivo y en caso
                'contrario como negativo. La tabla en la que el medico se basa para obtener el resultado es
                'la(siguiente):

                '0 - 1 mes     13    - 26 g%
                '> 1 y < = 6 meses 10    - 18 g%
                '> 6 y < = 12 meses 11    - 15 g%
                '> 1 y < = 5 años 11.5 - 15 g%
                '> 5 y < = 10 años 12.6 - 15.5 g%
                '> 10 y < = 15 años 13    - 15.5 g%
                'mujeres > 15 años 12    - 16 g%
                'hombres > 15 años 14    - 18 g%

        End Select

        'salida

    End Sub

End Module

raul338

Tu problema no es con el select case, si estas iniciando lo aprendiste bien. Tu problema es con las variables
Un valor esta en lo correcto si se encuentra en medio de DOS variables, un minimo y un maximo

Si vos comparas el porcentaje de sangre con algo, no obtenes nada, en cambio si lo comparas con un maximo y un minimo obtienes si es anemico, normal, o tiene demasiada sangre (?) :huh:

lo que tienes que hacer es declarar dos variables minimo y maximo

en el select case las asignas segun la edad

luego con un if averiguas su estado (si es mayor que el minimo y menor que el maximo)

Y listo :)

seba123neo

#2
el ultimo IF es en broma..no lo probe pero algo asi es...para que te des una idea nomas, se puede mejorar...

Código (vbnet) [Seleccionar]
Imports System.Console

Module Module1

   Sub Main()
       Title = "Nivel de Hemoglobina"
       ForegroundColor = ConsoleColor.Cyan

       Dim vEdad, vNivelHemoglobina As Double
       Dim vGenero As String
       Dim vRango(1) As Double

       WriteLine("Ingresar su edad: ")
       vEdad = ReadLine()

       WriteLine("Ingresar su género (H/M): ")
       vGenero = ReadLine()

       WriteLine("Ingresar su nivel de Hemoglobina: ")
       vNivelHemoglobina = ReadLine()

       Select Case vEdad
           Case 0 To 0.1
               vRango(0) = 13
               vRango(1) = 26
           Case Is > 0.1, Is <= 0.6
               vRango(0) = 10
               vRango(1) = 18
           Case Is > 0.6, Is <= 1
               vRango(0) = 11
               vRango(1) = 15
           Case Is > 1, Is <= 5
               vRango(0) = 11.5
               vRango(1) = 15
           Case Is > 5, Is <= 10
               vRango(0) = 12.6
               vRango(1) = 15.5
           Case Is > 10, Is <= 15
               vRango(0) = 13
               vRango(1) = 15.5
           Case Is > 15
               If vGenero.ToUpper = "H" Then
                   vRango(0) = 12
                   vRango(1) = 16
               Else
                   vRango(0) = 14
                   vRango(1) = 18
               End If
       End Select

       WriteLine("")

       If vNivelHemoglobina >= vRango(0) And vNivelHemoglobina <= vRango(1) Then
           WriteLine("Esta en los valores normales...")
       ElseIf vNivelHemoglobina < vRango(0) Then
           WriteLine("Esta debajo de los valores 'ANEMIA'")
       ElseIf vNivelHemoglobina > vRango(1) Then
           WriteLine("Esta por arriba de los valores 'POLICITEMIA'")
       Else
           WriteLine("No tenes sangre XD...")
       End If

       ReadLine()
   End Sub
End Module


saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

leliCabello