hola a todos bueno q empese a estudiar programacion con visual y tengo q hacer esto:
En una encuesta en el instituto se ingresaron los siguientes datos: apellido y nombre, edad, sexo (1=femenino, 2=masculino), estado civil (s=soltero, c=casado) se pide: (no se sabe cuantos se encuestaron)
a) Mostrar Cuantas Mujeres casadas hay.
b) Mostrar Cuantos Hombre menores de Edad Hay.
c) Mostrar la persona más grande con todos sus datos.
bueno yo hasta ahora tengo esto pero me parece q voy mal
Private Sub cmdEncuesta_Click()
Dim strNombre As String
Dim sngEdad As Single
Dim sngSexo As Single
Dim sngMasculino As Single
Dim sngFemenino As Single
Dim strCivil As String
Dim strCasado As String
Dim strSoltero As String
Dim sngMayor As Single
Dim strRespuesta As String
Dim sngMenor As Single
sngMasculino = 2
sngFemenino = 1
strCasado = "c"
strSoltero = "s"
sngMayor = 18
strRespuesta = "si"
Do While strRespuesta = "si"
strNombre = InputBox("Ingrese el nombre y appellido")
sngEdad = InputBox("Ingrese una edad")
sngSexo = InputBox("Ingrese el sexo: 1 = Femenino, 2 = Masculino")
strCivil = InputBox("Ingrese el estado civil: s = soltero, c = casado")
strRespuesta = InputBox("desea seguir agragando datos? si/no")
If sngSexo = 1 Then
sngSexo = sngFemenino
Else: sngSexo = sngMasculino
End If
If strCivil = c Then
strCivil = strCasado
Else: strCivil = strSoltero
End If
If sngEdad < 18 Then
sngEdad = sngMenor
Else: sngEdad = sngMayor
End If
Loop
MsgBox ("Las mujeres casadas son:" & strNombre & sngFemenino & strCasado)
MsgBox ("Los menores de edad son:" & strNombre & sngMasculino & sngMenor)
lukillo:
1) El código está indentado para el oj***, imposible de leer. :jaja:
2) En mi solución fijate porqué es mejor el uso de variables Boolean en lugar de como lo estabas haciendo tú.
3) Estabas medio perdidote, pero tampoco taaaaanto.
4) Puede ser que tenga algún error porque no lo compilé y lo escribí en NotePad, sobre todo la última linea del msgbox no se si compila, también puede haber algún error en la lógica porque obviamente no lo probé.
5) Tratá de entender linea por linea que es lo que hace y el porqué se hace así, cualquier cosa preguntá.
Private Sub cmdEncuesta_Click()
Dim strNombre As String
Dim sngEdad As Single
Dim sngSexo As Single
Dim strCivil As String
Dim esMujer As Boolean
Dim esCasado As Boolean
Dim esMayor As Boolean
Dim strRespuesta As String
sngMasculino = 2
sngFemenino = 1
strCasado = "c"
strSoltero = "s"
strRespuesta = "si"
' Variables para guardar lso datos de la mayor persona
strNombreMayor as String
strEstCivilMayor as String
sngEdadMayor as Single
strSexoMayor as String
Dim cantMenorMasculino As Single
Dim cantMujeresCasadas As Single
Do While strRespuesta = "si"
strNombre = InputBox("Ingrese el nombre y appellido")
sngEdad = InputBox("Ingrese una edad")
sngSexo = InputBox("Ingrese el sexo: 1 = Femenino, 2 = Masculino")
strCivil = InputBox("Ingrese el estado civil: s = soltero, c = casado")
strRespuesta = InputBox("desea seguir agragando datos? si/no")
If sngSexo = 1 Then
esMujer = True
Else
esMujer = False
End If
' Tengo en cuenta las minusculas y las mayusculas,
' igual creo que VB no toma en cuenta esto :S
If strCivil = "c" or strCivil = "C" Then
esCasado = True
Else
esCasado = False
End If
If sngEdad < 18 Then
esMayor = False
Else
esMayor = True
End If
if esCasado and esMujer then
cantMujeresCasadas = cantMujeresCasadas + 1
' Visual 6 acepta esta notación?
' cantMujeresCasadas += 1
endif
if esMujer = False and esMayor = False then
cantMenorMasculino = cantMenorMasculino + 1
endif
' Si la edad que tengo guardada en sngEdadMayor es menor que la que ingresé
' quiere decir que la persona que estoy ingresando es la mayor hasta el momento
' lo cual indica que tengo que guardar los datos
if sngEdadMayor < sngEdad
strNombreMayor = strNombre
if esCasado
strEstCivilMayor = "Casado/a"
else
strEstCivilMayor = "Soletero/a"
endif
sngEdadMayor = sngEdad
if esMujer
strSexoMayor = "Femenino"
else
strSexoMayor = "Masculino"
endif
endif
Loop
MsgBox ("Las mujeres casadas son:" & cantMujeresCasadas)
MsgBox ("Los menores de edad son:" & cantMenorMasculino)
MsgBox ("Los Datos de la persona Mayor son:" & vbcrlf &_
"Nombre: " & strNombreMayor & vbcrlf &_
"Edad: " & sngEdadMayor & vbcrlf &_
"Estado Civil: " & strEstCivilMayor & vbcrlf &_
"Sexo: " & strSexoMayor)
EndSub
Saludos
muchas gracias "elrosti" entendi casi todo pero un par de cosas no me quedaron muy claras (pensa q empese a estudiar hace 2 meses no mas :P )
1- que tipo de variable es boolean???
2- hay una linea q aparece esto: cantMujeresCasadas += 1
3- despues en esto me re perdi:
MsgBox ("Los Datos de la persona Mayor son:" & vbcrlf &_
"Nombre: " & strNombreMayor & vbcrlf &_
"Edad: " & sngEdadMayor & vbcrlf &_
"Estado Civil: " & strEstCivilMayor & vbcrlf &_
"Sexo: " & strSexoMayor) osea son los msgbox del final pero no entendi el "vbcrlf"
Cita de: lukillo en Junio 10, 2009, 12:33:48
muchas gracias "elrosti" entendi casi todo pero un par de cosas no me quedaron muy claras (pensa q empese a estudiar hace 2 meses no mas :P )
1- que tipo de variable es boolean???
2- hay una linea q aparece esto: cantMujeresCasadas += 1
3- despues en esto me re perdi:
MsgBox ("Los Datos de la persona Mayor son:" & vbcrlf &_
"Nombre: " & strNombreMayor & vbcrlf &_
"Edad: " & sngEdadMayor & vbcrlf &_
"Estado Civil: " & strEstCivilMayor & vbcrlf &_
"Sexo: " & strSexoMayor) osea son los msgbox del final pero no entendi el "vbcrlf"
1) Boolean es un tipo de dato que puede tener 2 valores posibles "Verdadero" (True) o "Falso" (False), eso te sirve para guardar datos cuando tenes dos posibilidades.
En tu caso por ejemplo en sexo tenes 2 posibilidades, lo podriamos resumir en la pregunta
"¿Es Mjer o No ?"
Por eso seteo la variable esMujer a True cuando el sexo es femenino y en False cuando es Masculino, sabes que si
esMujer = FalseQuiere decir que es Hombre (En la practica no es así pero vamos a darlo por supuesto :jaja: ), si fuera "True" sabes que es Mujer.
2) Esa linea fijate que tiene una comilla siemple ( ' ) adelante, significa que es un comentario, en la mayoría de los lenguajes de programación en lugar de escribir esta linea
cantidad = cantidad + 1se puede cambiar por esta otra linea
cantidad += 1Que en realidad hacen lo mismo, sumar 1 a la variable "cantidad", pero la segunda forma es mas facil de entender a simple vista luego de que te acostumbras.
3) vbcrlf es un "Retorno de Carro" o sea, como si precionaras "Enter" cuando estas escribiendo, lo que hace es que el mensaje que muestra quede algo como lo siguiente:
CitarLos Datos de la persona Mayor son:
Nombre: Federico Perez
Edad: 25
Estado Civil: Soltero
Sexo: Masculino
Si no tuviera los "vbcrlf" saldria todo a lo largo y no lo haría renglón por renglon.
El guión bajo ("_") es solo una forma de decirle a Visual Basic que es todo la misma linea de código porque si no da un error al querer compilar, se hace para que quede mas prolijo y no tener una linea demasiado larga de código que despues tengo que andar con las barras de desplazamiento para aca y para alla.
Espero haber sido claro.
Saludos
PD: ¿Compiló ?
muchas gracias rosti! bueno mira lo pase se a visual hubo q agregarle un par de cosas: no me tomo el "_" q estaba alado vbcrlf, después de ingresar todos los datos del 1er encuestado (edad sexo est. civil etc) me tira los datos y no me deja seguir agregando gente revise pero no pude encontrar el error fijate si lo podes ver vos q la tenes mas clara :jaja:
gracias de nuevo y perdona q tarde en responder
ufffff, la verdad que a simple vista no veo nada, se supone que si escribis "si" en la última pregunta no deberías tener problemas y debería volver a preguntarte los datos, pero puede ser que me este faltando algo, como no tengo el Visual Basic (Estoy en Linux) no puedo comprobar la sintaxis, pero a simple vista está bien el loop.
Saludos.
PD: el problema del "_" puede ser porque esta pegado al simbolo "&", deberías dejar un espacio entre el "&" y el "_", sinceramente no he programado mucho en Visual Basic 6 y hace tiempo que no lo hago, por eso no recuerdo bien estos detalles.
PD2: VB 6 apesta, no se si lo estas estudiando en un instituto o si lo estas haciendo por tu cuenta, pero si lo estas haciendo por tu cuenta te diría que apenas entiendas las basicas de Visual Basic 6, empieces a estudiar Visual BAsic .NET que es mucho mejor en todos los aspectos.