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ñospuedes 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