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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


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


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Problema de rango en C# (Parseando)
« en: 26 Junio 2012, 16:24 pm »

Hola, tengo un pequeño problema en C#, tengo que dar solucion a un problema donde me entran un numero n tal que n esta entre 0 y 10000, no es divisible por 2 ni por 5. Tengo que ir dividiendo 1/n y ver si es divisible si no divido 11/n y si no 111/n hasta xCantidadDe1/n hasta que sea divisible por n. Luego debo devolver la cantidad de 1s. Lo que me pasa es que si el numero de uno es muy grande se me sale del rango de cualquier tipo de datos de .NET. Probe con string, pero igual tengo que Parsearlo.

Aqui les dejo el codigo que tengo hecho, si pueden corregirme y ayudarme y explicarme les estaria agradecidos.

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication1
  7. {
  8.    class Program
  9.    {
  10.        static void Main(string[] args)
  11.        {
  12.            while (true)
  13.            {
  14.                string numero = Console.ReadLine();
  15.                string ones = "1";
  16.                double a = double.Parse(numero);
  17.                if (a == 0) break;
  18.                while (double.Parse(ones) % a != 0)
  19.                {
  20.                    ones += "1";
  21.                }
  22.                Console.WriteLine(ones.Length);
  23.            }
  24.        }
  25.    }
  26. }
  27.  
Salu2s..:Gracias de antemano.


En línea

Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: Problema de rango en C# (Parseando)
« Respuesta #1 en: 26 Junio 2012, 16:43 pm »

Pero ahi yo veo que estas haciendo eso infinitamente, así obviamente se saldrán del rango... colocale limites a ese ciclo


En línea

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: Problema de rango en C# (Parseando)
« Respuesta #2 en: 26 Junio 2012, 16:52 pm »

¿Que ciclo esta infinito?.....

El while(true) termina cuando a==0
y el  while (double.Parse(ones) % a != 0) cuando la variable ones/a tenga resto 0

aqui actualizo el codigo.... cambiando una mejor manera de cambiar los parser

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication4
  7. {
  8.    class Program
  9.    {
  10.        static void Main(string[] args)
  11.        {
  12.            while (true)
  13.            {
  14.                string numero = Console.ReadLine();
  15.                if (numero == null || numero.Contains(' ') || numero=="") break;
  16.                long ones = 1;
  17.                int potencia = 1;
  18.                long a = long.Parse(numero);
  19.                if (a == 0) break;
  20.                while (ones % a != 0)
  21.                {
  22.                    ones += (long)Math.Pow(10, potencia);
  23.                    potencia++;
  24.                }
  25.                Console.WriteLine(ones.ToString().Length);
  26.            }
  27.        }
  28.    }
  29. }
  30.  
« Última modificación: 26 Junio 2012, 16:57 pm por DarK_FirefoX » En línea

Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: Problema de rango en C# (Parseando)
« Respuesta #3 en: 26 Junio 2012, 17:07 pm »

¿Que ciclo esta infinito?.....

El while(true) termina cuando a==0
y el  while (double.Parse(ones) % a != 0) cuando la variable ones/a tenga resto 0

aqui actualizo el codigo.... cambiando una mejor manera de cambiar los parser

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication4
  7. {
  8.    class Program
  9.    {
  10.        static void Main(string[] args)
  11.        {
  12.            while (true)
  13.            {
  14.                Double numero = Double.Parse(Console.ReadLine());
  15.                //if (numero == null || numero.Contains(' ') || numero=="") break;
  16.                Double ones = 1;
  17.                Double potencia = 1;
  18.  
  19.                if (numero == 0) break;
  20.                while (ones % numero != 0)
  21.                {
  22.                    ones += (Double)Math.Pow(10, potencia);
  23.                    potencia++;
  24.                }
  25.                Console.WriteLine(ones.ToString().Length);
  26.            }
  27.        }
  28.    }
  29. }
  30.  
  31.  

Dame el error exacto y cuando se produce y si te lanza en la linea muestranos cual es, mientras mas informacion haya mas personas podriamos intentar ayudarte.

PD: Intenta con los cambios que hice.
PD2: no me habia dado cuenta del detalle, no ando con el visual studio a mano , pero intentare darte ideas xD

A todo esto, en que momento será 0 el numero?
« Última modificación: 26 Junio 2012, 17:11 pm por DonVidela » En línea

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: Problema de rango en C# (Parseando)
« Respuesta #4 en: 26 Junio 2012, 17:25 pm »

Con double tampoco funciona, imaginate que tengo un ejemplo con el numero 589 que da 90 unos. y el double no tiene un rango de 90 cifras, no obstante, ya lo resolvi...aqui dejo el codigo...

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace Ones
  7. {
  8.    class Program
  9.    {
  10.        static void Main(string[] args)
  11.        {
  12.            while (true)
  13.            {
  14.                string numero = Console.ReadLine();
  15.                if (string.IsNullOrWhiteSpace(numero) || numero == "0") return;
  16.                Console.WriteLine(Mult(numero));
  17.            }
  18.        }
  19.        public static int Mult(string s)
  20.        {
  21.            int a = int.Parse(s);
  22.            long ones = 0;
  23.            int potencia = 0;
  24.            ones += (long)Math.Pow(10, potencia);
  25.            while (ones % a != 0)
  26.            {
  27.                potencia++;
  28.                ones += (long)Math.Pow(10, potencia);
  29.            }
  30.            return ones.ToString().Length;
  31.        }
  32.    }
  33. }
  34.  

Muchas gracias....

PD: Tengo que comprobar si es null o vacio porque el .cs lo subo en un probador que trabaja automaticamente y prueba n casos
En línea

Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: Problema de rango en C# (Parseando)
« Respuesta #5 en: 26 Junio 2012, 17:29 pm »

 ;-)

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Parseando XML en Python
Scripting
Manibal_man 0 3,230 Último mensaje 23 Abril 2006, 20:57 pm
por Manibal_man
problema con un vista y vpn (y ahora dos IP... del mismo rango...raroraro)
Redes
xarlyuno 0 3,143 Último mensaje 21 Febrero 2011, 16:20 pm
por xarlyuno
Parseando feed desde FeedBurner en PHP
Desarrollo Web
aaronduran2 2 2,245 Último mensaje 20 Noviembre 2012, 19:18 pm
por aaronduran2
Problema con regexp (Parseando HTML)
Programación General
Debci 6 2,766 Último mensaje 7 Marzo 2013, 01:29 am
por 1mpuls0
Problema con el rango de WIFI en openSUSE
GNU/Linux
jesslandero2 1 2,287 Último mensaje 10 Julio 2018, 05:24 am
por jesslandero2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines