elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: [AIO elhacker.NET 2015] Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Calculo niveles
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Calculo niveles  (Leído 155 veces)
Meta


Desconectado Desconectado

Mensajes: 3.194



Ver Perfil WWW
Calculo niveles
« en: 31 Julio 2020, 23:50 »

Hola:

Tengo esta barra que pone de 0 % al 100 %.

0%     19 %                                                                  95 %        100%
|--------|-----------------------------------------------------------|--------------|

Mejor imagen de abjo.



Dentro de Windows Form incluyo la barra progressBar y el trackBar para regular una variable.

Internamente del programa, hay dos variables, una que pone 19 y otra variabe que pone 95. Esas con constantes.

Internamente una variable es capaz de moverse del 19 al 95. En otra variable indica que es un 0 al 100 %.

Por ejemplo, si con el trackBar lo pongo al valor 95, en un label tiene que indicar que estoy al 100.

Internamente funciona del 19 al 95 y cara del usuario lo ve como si fuera del 0 al 100 %.

Código que he hecho hasta ahora y no me funciona.
Código:
using System;
using System.Windows.Forms;

namespace Regular_nivel_batería_01
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            progressBar1.Value = (trackBar1.Value - 19) * 100 / (95 - 19);
            //progressBar1.Value = trackBar1.Value;
            label_Porcentaje.Text = trackBar1.Value.ToString() + " %";
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // Valores del trackBar.
            trackBar1.Maximum = 100;
            trackBar1.Minimum = 0;
            trackBar1.SmallChange = 5;
            trackBar1.Value = 19;

            // Valores barra de progreso.
            progressBar1.Maximum = 95;
            progressBar1.Minimum = 19;
            progressBar1.Step = 5;
            progressBar1.Value = trackBar1.Value;
        }
    }
}

¿Es posible hacerlo?

Saludos.


En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
NEBIRE


Desconectado Desconectado

Mensajes: 2.251


Ver Perfil
Re: Calculo niveles
« Respuesta #1 en: 1 Agosto 2020, 17:55 »

Son simples matemáticas, y al caso condicionarlas es relativamente fácil.

De entrada debes mantener un valor absoluto:

0....n
Siendo 'n' el valor tan grande como se precise.
Luego se tiene un limitador (limite') que si va del 0 al 99, pués son 100 valores y si va del 0 al 100 son 101 valores.
Entonces se calcula la razón por la que a cada unidad de 'n', le corresponde un valor de 'limite', el cual logicamente tendrá decimales (si no son múltiplos).

razon = (rangoAbsoluto / rangoRelativo)
razon = ((n-inf+1) / (limiteSuperior-Limiteinferior + 1))


En el código vas procesando lo que sea, imaginemos la lectura de 2856 ficheros (0 al 2855)... y vamos por el 1500...

n = (2855-0+1) = 2856
limite = (100-0+1) = 101
razon = (2856 / 101) = 28'27

Si hay bucles (iterativos o recursivo) y los valores no cambian, el cálculo de la razón es preferible hacerlo previamente...(basta calcularlo una sola vez), aunque si no es mucho cálculo, tampoco podría suponer una sobrecarga...

Y luego dentro del bucle la transformación (interpolación) de 'n' al porcentaje equivalente , será el cálculo inverso:
valorRelativo = (valorActual / razon)
progreso.Value = (numFile / razon)
progreso.Value = (1500 / 28'27) = 53'05aprox...




Bien si lo tienes claro hasta aquí, hacer lo que quieres, es repetir lo mismo, es decir es volver a relativizar un valor dentro del previo relativizado.
Así el de antes que era relativo, hace aquí las veces de absoluto y el relativo (0-100) ahora se mueve en ese nuevo rango entre 19 y 95.


razon2 = ((95-19+1) / 101) = 0'7623

Aplicando el valor recién obtenido de 53'04622
progreso.Value = (actual / razon2)
progreso2.Value = ((53'04622-19) / 0'7623) = 44'658


Como hay 2 extremos con valores fijos, debe condicionarse:
Código:
Si (progreso.value < 19) luego
    progreso2.value = 0
O si (progreso.value > 95) luego
    progreso2.value = 100
Y Si no
    progreso2.value = ((progreso.value - limiteinferior) / razon2)
Fin si

..y eso es todo...
Nota que las 2 'forumulas' en rojo, son la clave, y los condicionantes del código (previo a esta línea)simplifican el caso anidado con límites fuera de rango fijos a valores limites.

Adjunto un par de imágenes y un código rápido en vb6 (que para esto se presta muy bien...).
Nota que el cálculo de la razón la he puesto  'enlinea', para captura todo el código completo, pero si los limites de cada 'scroll/progreso', no cambian pueden precalcularse previamente en alguna función aparte...

Una captura con los valores justo cuando el 'interno' pasa de 0.



Otra captura con el valor 1500, y con el valor justo antes de alcanzar el 100% del 'interno'


« Última modificación: 1 Agosto 2020, 18:00 por NEBIRE » En línea

Meta


Desconectado Desconectado

Mensajes: 3.194



Ver Perfil WWW
Re: Calculo niveles
« Respuesta #2 en: 1 Agosto 2020, 19:17 »

Muchas gracias. Lo pruebo y confirmo.
En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Agregando niveles de usuarios « 1 2 3 4 »
PHP
neopuerta360 34 7,516 Último mensaje 25 Octubre 2010, 00:56
por neopuerta360
Establcer niveles, con una tabla y con un iframe???
Desarrollo Web
j.lerin 3 1,728 Último mensaje 22 Febrero 2012, 01:07
por j.lerin
Selects dependientes 3 niveles con ajax
PHP
KateLibby 5 5,640 Último mensaje 15 Noviembre 2013, 15:38
por gowend
Listar niveles Árbol n-ario
Programación C/C++
chinolaya 3 3,630 Último mensaje 3 Febrero 2015, 12:33
por eferion
niveles de la deep web
Hacking Ético
protocultura22 4 1,966 Último mensaje 21 Julio 2019, 17:54
por protocultura22
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines