Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





¿Qué valores pueden obtenerse de una variable y cómo?

Iniciado por Tachikomaia, 29 de Abril de 2023, 07:21:05 AM

« anterior - próximo »

Tachikomaia

Variables/valores de tipo número, texto o tabla (sería como un array 2d supongo).

Empezaré a hacer una lista y pseudocódigos, uds favor vayan agregando o pongan un link donde se responda esta pregunta o algo así, gracias.

Supongamos que la variable se llama V.

Desde tipo número obtener un número:
(sólo usar si se sabe que V es número).

1- Cantidad de caracteres.
Los lenguajes de programación suelen tener una función para esto, quizá antes es necesario convertir al número en texto.
Sin esa función tendría que ser algo como:
Largo = 0
Lupa = -1
Repetir
   Lupa++
   Si caracter nro Lupa de V != vacío
      Largo++
   sino
      Lupa = -1
mientras Lupa != -1

2- Cantidad de caracteres sin contar el "-" (si tiene).
Los lenguajes suelen tener una función que convierte un número a su absoluto, pero sino podría ser:
Igual que el anterior pero luego poner:
Si el 1er caracter de V == "-"
__Largo--

3- Cantidad de caracteres sin contar la "," (si tiene).
ValorObtenido = Largo de (Quitar decimales a V)
Sin esa función o similares habría que hacer algo como:
Largo = 0
Lupa = -1
Repetir
   Lupa++
   Si caracter nro Lupa de V != vacío y != ","
      Largo++
   sino
      Lupa = -1
mientras Lupa != -1

4- Cantidad de caracteres sin contar los (inserte número de un caracter).
Largo = 0
Lupa = -1
Repetir
   Lupa++
   Si caracter nro Lupa de V != vacío y != (caracter)
      Largo++
   sino
      Lupa = -1
mientras Lupa != -1

5- Cantidad de caracteres sin contar los (inserte caracter1) ni los (inserte2).
Largo = 0
Lupa = -1
Repetir
   Lupa++
   Si caracter nro Lupa de V != vacío y != (caracter1) y != (c2)
      Largo++
   sino
      Lupa = -1
mientras Lupa != -1
Si se tienen muchas excepciones, para evitar poner muchos ifs se podría hacer algo como:
// Excepciones (1 es excepción), se pueden poner hasta 10:
Char0 = 1
Char1 = 1
Char3 = 1
Char4 = 1
Char5 = 1
Largo = 0
Lupa = -1
Repetir
   Lupa++
   Si caracter nro Lupa de V != vacío
      Si eval("Char"+(caracter nro Lupa de V)) != 1
         Largo++
   sino
      Lupa = -1
mientras Lupa != -1
Si se quiere exceptuar "," o "-" no sé cómo evitar agregar ifs para eso.

6- Cantidad de caracteres sin contar los (inserte 2 caracteres).
NoContar = (inserte2c)
Largo = 0
Lupa = -1
Repetir
   Lupa++
   Si caracter nro Lupa de V es != vacío
      Si caracter nro Lupa de V == caracter nro 1 de NoContar
         Lupa++
         Si caracter nro Lupa de V != caracter nro 2 de NoContar
            Lupa--
            Largo++
   sino
      Lupa = -1
mientras Lupa != -1
Creo...

7- Cantidad de caracteres sin contar los (inserte un número).
Se puede hacer como el anterior pero si la excepción es más larga que la cantidad de caracteres analizados en el código no funcionará bien. Para que funcione bien habría que meter un while pero no soy muy hábil en eso, a ver:
Excepcion = (inserte número)
ExcepcionLargo = Largo de Excepcion, duh!
Largo = 0
Lupa = -1
Repetir
   Lupa++
   Si caracter nro Lupa de V es != vacío
      Si caracter nro Lupa de V == caracter nro 1 de Excepcion
         LupaBackup = Lupa
         Lupa2 = 0
         Repetir
            Lupa2++
            Si caracter nro Lupa2 de Excepcion == vacío
               // La excepción ocurrió
               Lupa2 = -1
            sino si caracter nro Lupa2 de Excepcion != caracter nro Lupa de V
               // La excepción no ocurrió
               Largo++
               Lupa = LupaBackup
               Lupa2 = -1
            sino
               Lupa++
               Lupa2++
         mientras Lupa2 != -1
      sino
         Largo++
   sino
      Lupa = -1
mientras Lupa != -1
Probablemente tenga algún error.

8- Cantidad de caracteres sin contar los (inserte número1, número2...).
// Inserte todas las excepciones que quiera, con el formato Ex(número aquí).
Ex(inserte número1) = 1
Ex(inserte número2) = 1
Ex(inserte número3) = 1
Ex(inserte número4) = 1
Ex(inserte número5) = 1
ExMinLargo = (inserte)
ExMaxLargo = (inserte)
Largo = 0
Lupa = -1
MaxLupa = (Largo de V) - ExMinLargo
Si MaxLupa < 0
   // La excepción más corta es más larga que V, ergo no está incluída.
   Largo = Largo de V
sino si MaxLupa == 0
   // La excepción más corta es igual de larga que V, ergo basta con chequear ese largo.
   Si eval("Ex"+NumaChequear) != 1
      Largo = Largo de V
   sino
      Largo = 0
sino
   Repetir
      Lupa++
      Lupa2 = Lupa
      NumaChequear = ""
      // Lo siguiente toma tantos caracteres de V como son necesarios para tener el largo igual al largo de la excepción más corta.
      Repetir
         Lupa2++
         Si caracter nro Lupa2 de V es != vacío
            NumaChequear = Concatenar (NumaChequear, (Caracter nro Lupa2 de V))
         sino
            // V ya no tiene caracteres sin chequear, ergo no hay más excepciones, fin.
            Largo = Largo + Lupa2 - Lupa
            Lupa2 = ExMinLargo+1
      mientras Lupa2 < ExMinLargo
      Si Lupa2 != ExMinLargo+1
         // Si V aún tiene caracteres sin chequear.
         Si eval("Ex"+NumaChequear) != 1
            // El número tomado no es excepción. Se agregarán caracteres hasta que no haya, o hallar una excepción, o superar el largo de la excepción más larga.
            Repetir
               Lupa2++
               Si caracter nro Lupa2 de V es == vacío
                  Lupa2 = ExMaxLargo+1
               sino
                  NumaChequear = Concatenar (NumaChequear, (Caracter nro Lupa2 de V))
                  Si eval("Ex"+NumaChequear) == 1
                     // Es una excepción.
                     Lupa2 = ExMaxLargo+1
            mientras Lupa2 < ExMaxLargo
            Si Lupa2 == ExMaxLargo+1
               Largo++
   mientras Lupa < MaxLupa
Más probablemete tenga error, me perdí bastante.

Bueno dejaré de hacer estos códigos por un tiempo, primero me interesa ver qué se puede obtener de una variable.

Próximamente posteo casos de contar caracteres específicos e iré posteando más cosas.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.