un programa que me permita iIngresar números hasta que uno sea cero. Calcular el promedio de ellos y mostrar el resultado y cuántos se ingresaron. :) :o :huh: :-( :¬¬
Pero muestra el codigo sino como vemos el Error :o.
El titulo podría ir en minúscula.
lo siento mira esta es la codificacion
Private Sub Command1_Click()
Dim n As Integer
Dim suma As Integer
Dim pro As Integer
For I = 1 To 0
n = Val(InputBox("Dame un numero", "NUMEROS HASTA QUE UNO SEA 0"))
suma = suma + n
pro = suma / n
If n = 0 Then
label1.Text = suma
Else
Next I
label2.pro
End If
End Sub
Necesitas más sobre la logica de la programacion y sobre la sintaxis de VB.
Esta es una posible solucion a tu ejemplo:
Private Sub Command1_Click()
Dim Numero As Long
Dim Suma As Long
Dim Pro As Long
Dim Cantidad as Long
Numero = 1
Suma = 0
Pro = 0
Cantidad = 0
Do While Numero <> 0
Numero = Val(InputBox("Dame un numero", "NUMEROS HASTA QUE UNO SEA 0"))
if Numero <> 0 then
Cantidad = Cantidad + 1
Suma = Suma + Numero
Pro = Suma / Cantidad
end if
Loop
'Luego tienes los valores en cada variable y los muestras donde sea
End Sub
Y no es codificación. es código fuente.
grasia men....pro mira ahora tengo este otro.... no lo tomes como molestia esq de vdd nesesito ayuda.. mira este.. es casi lo mismo.. kisiera ver si me puede corrregir es casi la misma codificacion q utilizaba en el anterior......
Ingresar las notas de 10 alumnos pertenecientes a un curso e indicar:
Cantidad de alumnos que aprobaron con una nota comprendida entre 4 y 6.
Cantidad de alumnos aplazados (nota menor a 4).
Cantidad de alumnos promocionados (nota superior o igual o 6).
esta es la codificacion
Private Sub Command1_Click()
Dim n As Integer
For I = 1 To 10
n = Val(InputBox("Dame un NOTAS", "INGRESA LOS NOTAS########"))
If n >= 6 Then
Label1.Caption = n
Else
End If
If n >= 4 Then
Label2.Caption = n
Else
Label3.Caption = n
End If
Next I
End Sub
te agradeceria si me ayudaras...¡¡¡¡¡¡ y de la q me salvas..¡¡
aki es este codigo duente.. al ejecutar... luego de ingresar las 10 notas..me salen solo el numero 1 en cada label.....
Creo que debes replantearte la solucion al problema.
Si estuviera en tu lugar, iría por partes.
El enunciado te dice que trabajarás con 10 valores; entonces, haz un bucle para capturar los 10 valores (Lo más aconsejable para guardar los datos sería una matriz).
Luego, sólo debes recorrer la matriz, item x item e ir contando las cantidades pedidas.
No te pongo el código aquí por algo muy simple: si te doy el código, no aprendes.
La primera vez, fue eso: la primera vez; pero desde ahora debes TRATAR de solucionarlo por ti mismo.
Saludos!
PD: Intenta repensar el código y haz un intento. Si no te funciona, postéalo y lo veremos nuevamente. ;)
mira esta es otro codigo con el que intente hacer.... el programa.. pro es lo mismo....me salen los numeros sumados... en cada label........
Dim promo As Integer
Dim apro As Integer
Dim apla As Integer
-------------------------------------------------------------------------------------------------------------
Private Sub Command1_Click()
If Text1 >= 7 Then
Label11.Caption = 1
Else
End If
If Text1 >= 4 Then
Label12.Caption = 1
Else
Label13.Caption = 1
End If
If Text2 >= 7 Then
Label11.Caption = 1
Else
End If
If Text2 >= 4 Then
Label12.Caption = 1
Else
Label13.Caption = 1
End If
If Text3 >= 7 Then
Label11.Caption = 1
Else
End If
If Text3 >= 4 Then
Label12.Caption = 1
Else
Label13.Caption = 1
End If
If Text4 >= 7 Then
Label11.Caption = 1
Else
End If
If Text4 >= 4 Then
Label12.Caption = 1
Else
Label13.Caption = 1
End If
If Text5 >= 7 Then
Label11.Caption = 1
Else
End If
If Text5 >= 4 Then
Label12.Caption = 1
Else
Label13.Caption = 1
End If
If Text6 >= 7 Then
Label11.Caption = 1
Else
End If
If Text6 >= 4 Then
Label12.Caption = 1
Else
Label13.Caption = 1
End If
If Text7 >= 7 Then
Label11.Caption = 1
Else
End If
If Text7 >= 4 Then
Label12.Caption = 1
Else
Label13.Caption = 1
End If
If Text8 >= 7 Then
Label11.Caption = 1
Else
End If
If Text8 >= 4 Then
Label12.Caption = 1
Else
Label13.Caption = 1
End If
If Text9 >= 7 Then
Label11.Caption = 1
Else
End If
If Text9 >= 4 Then
Label12.Caption = 1
Else
Label13.Caption = 1
End If
If Text10 >= 7 Then
Label11.Caption = 1
Else
End If
If Text10 >= 4 Then
Label12.Caption = 1
Else
Label13.Caption = 1
End If
End Sub
MCKSys Argentina tiene razón.
Bueno lo que pasa que cada vez del bucle agregas el valor al control.
lo que tienes que hacer en cada caso sumar 1 a tu variables, de tres variables( alumnos malos, bueno y super-buenos), respectivamente, luego al final de la repetición muestras los resultados de tus variables.
pro eso va en cada condicion... o bucle..????
claro. aunque solo serian tres condiciones. o 2 sin contar el else.
en la primera codificacion q envie de este mismo ejercicio.... intente eso... incluso cambie las declaraciones.. pro.. en ese caso... me empieza a sumar los numeros.. en un solo label o etiqueta..¡¡¡¡
OK, veamos la primera parte: capturar los 10 valores:
Private Sub Command1_Click()
Dim n As Long
Dim I as Long
Dim Notas(1 to 10) as Long 'Guarda las notas como numeros enteros
For I = 1 To 10
n = Val(InputBox("Dame una NOTA", "INGRESA LOS NOTAS########")) 'pide numero
Notas(i) = n 'guarda numero
Next i
'Una vez guardados los 10 numeros, ahora hay que contar
'Continua aqui!
End Sub
Ahora, haz un bucle para recorrer la matriz y usa variables para contar las cantidades... :P
Saludos!
gracias... kieres decir las condiciones de la primera codicion..¡¡¡
xq las conozco por condicion..
No es codificación!!!
MCKSys Argentina se la pusiste peor con Arrays. ;-)
Gabriel094 te salio mas caro el remedio que la enfermedad.
Cita de: Danyfirex en 29 Enero 2013, 00:04 AM
MCKSys Argentina se la pusiste peor con Arrays. ;-)
No se porque dice eso... :xD
De todas formas, una vez que tienes las notas, sólo debes recorrerlas para poder hacer las cuentas pedidas:
Private Sub Command1_Click()
Dim n As Long
Dim I as Long
Dim Notas(1 to 10) as Long 'Guarda las notas como numeros enteros
Dim Mediocres as Long
Dim Aplazados as Long
Dim Promocionados as Long
For I = 1 To 10
n = Val(InputBox("Dame una NOTA", "INGRESA LOS NOTAS########")) 'pide numero
Notas(i) = n 'guarda numero
Next i
'Una vez guardados los 10 numeros, ahora hay que contar
'Continua aqui!
Mediocres = 0
Aplazados = 0
Promocionados = 0
For I = 1 To 10
If Notas(i) < 4 then
Aplazados = Aplazados + 1
ElseIf Notas(i) >= 6 then
Promocionados = Promocionados + 1
Else
Mediocres = Mediocres + 1
endif
Next I
End Sub
Y asi ya tienes los valores pedidos.
@Gabriel094: Revisa el código. Si hay algo que no entiendes, pregunta. Es la única forma en que aprenderás.
Offtopic:
Me parece que le hacéis un flaco favor a estos usuarios que vienen pidiendo tareas sin ningún interés en aprender. Me he fijado que tú, @Danyfirex, le das mucha bola a este tipo de usuarios. :-\
Cita de: Karcrack en 29 Enero 2013, 00:14 AM
Offtopic:
Me parece que le hacéis un flaco favor a estos usuarios que vienen pidiendo tareas sin ningún interés en aprender. Me he fijado que tú, @Danyfirex, le das mucha bola a este tipo de usuarios. :-\
@Karcrack si tienes razón. pero seguro alguien interesado lo va a analizar. "Al menos"
A cuantos le has facilitado las cosas con tus grandes códigos? "Uff miles" :S
Y cuantos han aprendido. (yo soy uno)
así que no lo veo tan malo. responder.
saludos Mr vb god. ("eso lo ley en la web") ;D
totalmente de acuerdo.
estamos creando borregos.
creo que nos quejamos de que en el mundo laboral hay gente profesionalmente incompetente, sin darnos cuentas de que nosotros mismos lo permitimos.
una cosa es aportarnos entre todos, y otro es que los fuertes cacen para los debiles y hasta les mastiquen la comida.
estamos aqui para aprender. pero aprender es algo que se realiza bajo dos condiciones indiscutibles: la primera es EN ORDEN (sin fundamentos, no hay nada), y la segunda es CON ESFUERZO (te enseño a pescar, no me pidas el pez)
Creo que en este caso Gabriel094 ha hecho el intento de solucionarlo por sus propios medios y no ha podido dar con la solucion.
En estos casos, estoy dispuesto a ayudar (al menos, hasta donde den mis conocimientos).
Por eso siempre pregunto por el código hecho hasta el momento y recuerdo que aquí no se hacen tareas.
Cita de: MCKSys Argentina en 29 Enero 2013, 00:26 AM
Creo que en este caso Gabriel094 ha hecho el intento de solucionarlo por sus propios medios y no ha podido dar con la solucion.
En estos casos, estoy dispuesto a ayudar (al menos, hasta donde den mis conocimientos).
Por eso siempre pregunto por el código hecho hasta el momento y recuerdo que aquí no se hacen tareas.
estoy un poco de acuerdo, pero sigo viendo un problema severo de bases. y el tratamiento del problema, como si fuera una loteria, "a ver si cambiando el código acierto".
y la manera en la que estais orientándole tampoco me parece correcta. él debe construir el conocimiento dentro de su mente con las referencias adecuadas, no copiar y pegar snippets de código.
es mi opinion.
@alist3r el que quiere aprender aprende. aunque le peguen un snippet, solo es cuestión de analizarlo. a mi parecer.
puffff no sale.. ejjeee
lo analice bn.. lo logre.. ahora... para q vean q io no hago deberes..¡¡¡¡ pos tenia planeado estudiar cada una de las cosas nuevas q agragaban en el codigo y si me intereso en aprender...¡¡¡¡ trankilos...¡¡¡¡ solo hice un intento y pedi ayuda nadies es perfecto icluso uno de uds.. a de haber pedido ayuda en algun momento.... asi mismo con los errores.. q por mas q los analicen se hacen faciles..¡¡¡¡¡
te agradezco MCKSys Argentina hoy aprendi mucho gracias a ti.. gracias...¡¡¡¡¡¡
aver un mini hint desde otro novato pero desde vb.net que he practicado en estos dias:
creo que estas viendo por arriba, sin entender como estructurar un poco el programa y al preguntar no identificas tus errores por no saber que valores estan siendo procesados
yo estaba aprendiendo para vb.net y llevare como 3 dias, pero reversando programas llevo mucho tiempo por ende es posible entender un poco mas estas logicas, pero supongo que deben ser pacientes, porque no es un lugar para resolver tareas, sino para charlar de estos temas e ir guiando o aprendiendo, pero no que te lo hagan...
Asi que comento sobre la primera tarea y algo de tu segunda (a modo que vayas meditando) si es que no lo hiciste
un programa que me permita iIngresar números hasta que uno sea cero. Calcular el promedio de ellos y mostrar el resultado y cuántos se ingresaron.
puedo crear un form que muestre
1) valor a ingresar
2) suma
3) promedio
o inclusive un label que contenga todo concatenado
label.text1= "valores sumados fueron"+suma+" ; promedio : " + promedio +""
ahora debemos pensar en la logica:
debes tener contadores que permitan ingresar valores
y saber cuantos datos tienes
promedio= a la suma de los valores dividido en el total de datos
por lo cual necesitas
1) sumar los valores
2) contar los datos ingresados,
por lo cual luego tomas el
primero ( 1) ) y lo divides en el 2)
un error seria tomar el primero y dividirlo en el ultimo dato (eso hiciste)
cuando tengo el promedio deberia mostrarlo ya sea al label, texto o lo que sea
deberian haber 2 contadores, uno para la suma y otro para la cantidad de datos que se han ingresados, la otra variable es de la operacion de division, que puedes usar con cierta presicion o simplemente con valores(2 decimales, 1 decimal, sin decimales)
ahora veamos lo que tienes
trabajaras con numeros:
Private Sub Command1_Click()
Dim n As Integer
Dim suma As Integer
Dim pro As Integer
una optimizacion seria en vb.net podria ser:
dim n,suma,pro,contador As integer
luego tenemos que creaste un if para cada valor I hasta 0, osea esperas que ingresen valores mediante inputbox
For I = 1 To 0
n = Val(InputBox("Dame un numero", "NUMEROS HASTA QUE UNO SEA 0"))
suma = suma + n
pro = suma / n
no hay filtros por si ingresas letras, no hay filtros si colocas comas o signos extraños
puedes colocar funciones para filtrar como isdigit()
optimizando al estilo vb.net :
para hacer mas simple el suma=suma+valor de n puede usarse una variable
suma += n que es lo mismo que suma=suma+n
ahora viendo el segundo caso
pro = suma / n
aqui hay una cosa especial:
el n contiene los valores ingresados en este caso el numero ingresado final, pero no es el numero de datos totales que hemos ingresado, por ende tu promedio esta mal enfocado
por lo cual la forma es crear un contador para saber cuantos datos fueron ingresados
luego como @MCKSys Argentina plantea usar otra estructura de ingreso
if Numero <> 0 then ; si el numero es diferente de 0 procesa el loop , si no lo es seguira la rutina despues del loop
Cantidad = Cantidad + 1
con esta variable cantidad el estara esperando contar cuantos datos fueron ingresados
pero el a diferencia usa while ->
el define el loop como
Do While Numero <> 0
Numero = Val(InputBox("Dame un numero", "NUMEROS HASTA QUE UNO SEA 0"))
if Numero <> 0 then
Cantidad = Cantidad + 1
Suma = Suma + Numero
Pro = Suma / Cantidad
end if
Loop
siendo los valores iniciales 0 y aun asi faltando un mini filtro de los valores ingresados.
tu proximo codigo refiere que si el valor de numero es cero muestra suma, si no para el proximo numero el promedio
pero como no pusiste contador van a haber problemas en mostrar los datos
*
If n = 0 Then
label1.Text = suma
Else
Next I
label2.pro
End If
End Sub
*
Claramente el codigo de @MCKSys Argentina esta funcionando para el primer caso
siempre y cuando ingresen numeros ;)
saludos Apuromafo
Tarea 2:
deberia ser la misma historia , comenzar a ver cuantos casos vamos a manejar
tienes snippet de @MCKSys Argentina
pero no dudes de preguntar si tienes dudas ,mira que puedes hacer codigos largos o cortos, pero es la logica la que te permitira hacerlo mas breve...
Ingresar las notas de 10 alumnos pertenecientes a un curso e indicar:
Cantidad de alumnos que aprobaron con una nota comprendida entre 4 y 6.
Cantidad de alumnos aplazados (nota menor a 4).
Cantidad de alumnos promocionados (nota superior o igual o 6).
esta es la codificacion
ante el evento del boton funciona
Private Sub Command1_Click()
Dim n As Integer
For I = 1 To 10
n = Val(InputBox("Dame un NOTAS", "INGRESA LOS NOTAS########"))
If n >= 6 Then
Label1.Caption = n
Else
End If
en este primer caso dices que el valor si es mayor a 6 muestre el label, pero coloca un contador ejemplo
buenos=bueno+1 o bien buenos +=1
siendo ese contador en integer(guiandote como lo anterior), pero para mostrarlo deberias codificarlo en string, por lo menos en vb.net se hace asi
buenos as string
bueno as integer
buenos=(buenos+1).tostring
luego envio el caption de lo que llevo
luego haces las mismas condicionantes, estas mal usando el valor n
If n >= 4 Then
Label2.Caption = n
Else
Label3.Caption = n
End If
Next I
End Sub
lo mismo se ve en estos casos, debes crear un mini contador para los datos que tienes para eso, son solo 3 contadores
luego el valor final que mostraras no debe ser n con el ultimo dato, sino mas bien el valor contador para cada caso.
insisto, aun no veo que filtren que datos son ingresados, si es realmente un numero entre 0 y cierto valor, por ejemplo que sumen un 8, cuando tenia notas del 0 al 7
otra idea para ir comparando los valores es que vayas creando mensajes
con variables en formato de string, asi luego comparas si vas bien o no
messagebox.show("mensaje")
lo importante es saber que hace cada cosa, variable evento a modo de entender que accion hace.
saludos cordiales Apuromafo
Cita de: Gabriel094 en 29 Enero 2013, 00:55 AM
te agradezco MCKSys Argentina hoy aprendi mucho gracias a ti.. gracias...¡¡¡¡¡¡
Como dijo el chavo del 8: No hay por dónde... :P
Saludos!
venga! voy a admitir que el alumno progresa bien! y que mi opinion anterior está dejando de aplicarse a el! :D
jajajaja
jejejejejeje pos... sip.... aprendi muxo y seguire aprendiendo eso siempre.y cuando.. me enseñen.. jejejje y pa ir io mediante el internet.. toodo lo nuevo q dan pues.. consultar gracias... a todos....¡¡¡ jejjej ;-) ;-) :huh: :huh: ::) ::) :D :D
Cita de: apuromafo en 29 Enero 2013, 01:00 AM
trabajaras con numeros:
Private Sub Command1_Click()
Dim n As Integer
Dim suma As Integer
Dim pro As Integer
una optimizacion seria en vb.net podria ser:
dim n,suma,pro,contador As integer
Eso NO es una optimización.
Cita de: apuromafo en 29 Enero 2013, 01:00 AM
insisto, aun no veo que filtren que datos son ingresados, si es realmente un numero entre 0 y cierto valor, por ejemplo que sumen un 8, cuando tenia notas del 0 al 7
Esta aprendiendo... total primero que aprenda. Cuando uno programa en capas (las capas pueden tener capas) se hacen cosas similares dejando a otras capas hacer este trabajo habitualmente esto se hace en la POO.
Dulces Lunas!¡.
No aprobaras tu clase de programacion del cole amigo...