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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


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

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ayuda C# (&&)
« en: 28 Mayo 2022, 01:05 am »

Hola, alguien sabe que puedo hacer para que a la hora de tener un tipo de dato decimal, float o double, en un programa ciclo (for o while) cuando uso el if con el operador lógico AND (&&) e ingreso un numero decimal por ejemplo (1.5) y tengo como acciones, un acumulador y contador, estos no funcionan, mientras que cuando ingreso un  numero entero si funciona, esto solo sucede con el AND mientras que con el OR (||) el acumulador y el contador si funciona con un numero decimal, si alguien sabe como puedo hacer para que me funcione con el AND (&&) lo agradecería mucho.


« Última modificación: 28 Mayo 2022, 01:37 am por etfz » En línea

etfz

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda C# (&&
« Respuesta #1 en: 28 Mayo 2022, 01:35 am »

Un ejmplo de lo que digo:

            int i = 1;
            int y = 0;
            decimal x;
            Console.WriteLine(".");
            while (i != -1)
            {
                Console.WriteLine("Introduce el numero {0}", i);
                x = Decimal.Parse(Console.ReadLine());
                if (x == -1)
                {
                    i = 0 + (-1);
                }
                else
                {
                    if (x >= 0 && x <= 1)
                    {
                        y = y + 1;
                        i = i + 1;
                    }                                                                 
                }
            }
            Console.WriteLine("Cantidad: {0}", y);
            Console.ReadKey();

Poniendo como numero el (1.5) la variable del ciclo while "i" y el acumulador "y" no incrementan, teniendo un tipo de dato decimal, mientras que si ingresara un "1" estos 2 si incrementan según su valor establecido "+1"
Esto solo me pasa con el tipo de dato AND (&&) mientras que si se usa el OR (||) los números decimales si cuentan y el acumulador y contador incrementan, alguna solución para usar el operador lógico AND? y que el acumulador y el contador funcionen?


En línea

etfz

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda C# (&&) (SOLUCIONADO)
« Respuesta #2 en: 28 Mayo 2022, 01:55 am »

Hola, alguien sabe que puedo hacer para que a la hora de tener un tipo de dato decimal, float o double, en un programa ciclo (for o while) cuando uso el if con el operador lógico AND (&&) e ingreso un numero decimal por ejemplo (1.5) y tengo como acciones, un acumulador y contador, estos no funcionan, mientras que cuando ingreso un  numero entero si funciona, esto solo sucede con el AND mientras que con el OR (||) el acumulador y el contador si funciona con un numero decimal, si alguien sabe como puedo hacer para que me funcione con el AND (&&) lo agradecería mucho.
En línea

Elektro Enjuto

Desconectado Desconectado

Mensajes: 121



Ver Perfil WWW
Re: Ayuda C# (&&
« Respuesta #3 en: 12 Octubre 2022, 23:37 pm »

Poniendo como numero el (1.5)

Omitiendo ese comentario con respecto al 1.5, ya que tu programa solo acepta como entrada válida "-1", "0" y "1" (ya sean enteros o decimales).

El único problema que hay es el error de dar por hecho que el número escrito se debería reconocer como un número decimal. Me explico:

Si no especificas un formato de número específico entonces se utliza el formato por defecto del sistema operativo actual, es decir el Español, es decir que para que el código te funcione de la forma esperada el separador de decimales que debes usar es el caracter de la coma, no el punto.

Aunque por supuesto esto lo puedes modificar a tu gusto. Puedes, por ejemplo, añadir una referencia a System.Windows.Forms y cambiar la localización de tu aplicación al Inglés para reconocer el punto como separador de decimales:

Código
  1. System.Windows.Forms.Application.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
( ese cambio afectará a toda la aplicación, incluyendo por ejemplo el idioma de los mensajes de error del depurador. )

O puedes utilizar la sobrecarga de la función Decimal.Parse que permite especificar un formato de número diferente al formato por defecto (es decir, cambiar del formato de número decimal en español, al inglés):

Código
  1. NumberFormatInfo usNumberFormat = CultureInfo.GetCultureInfo("en-US").NumberFormat;
  2.  
  3. x = decimal.Parse(Console.ReadLine(), NumberStyles.Float, usNumberFormat);

-Enjuto Mojamuto "rey de los frikis" a su disposición para futuras dudas.
« Última modificación: 12 Octubre 2022, 23:46 pm por Enjuto Mojamuto » En línea

@%$& #$ %&#$, ¡hay que decirlo más!.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines