Neumann en c#

Iniciado por EmmanuelTR9, 26 Febrero 2020, 07:28 AM

0 Miembros y 2 Visitantes están viendo este tema.

EmmanuelTR9

hola a todos los que puedan leer mi duda que tengo, estoy realizando este metodo en c# pero al momento de tomar los 5 numeros de enmedio de la multiplicacion no lo hace hasta despues lo hace no se si tenga algun error si me podria alguien corregir

 
Código (csharp) [Seleccionar]
double Cantidad;
           double Semilla;
           Semilla = int.Parse(textBox1.Text);
           Cantidad = int.Parse(textBox2.Text);
           double Semilla_cuadrada = 0;

           for (int i = 0; i < Cantidad; i++)
           {
               Semilla_cuadrada = Semilla * Semilla;
               String NSemilla_cuadrada;
               NSemilla_cuadrada = Convert.ToString(Semilla_cuadrada);
               String D4;
               D4 = NSemilla_cuadrada.Substring(3, 5);
               Semilla = Convert.ToInt64(D4);
               listBox1.Items.Add(Semilla_cuadrada);
               listBox2.Items.Add(Semilla);
           }



CoAdm: Etiqueta corregida y tema movido al subforo correcto

engel lex

desconozco el metodo que describes, pero me parece que no es necesario convertir a string, podrías explicar lo que necesitas hacer en la operacion?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

EmmanuelTR9

Cita de: engel lex en 26 Febrero 2020, 07:41 AM
desconozco el metodo que describes, pero me parece que no es necesario convertir a string, podrías explicar lo que necesitas hacer en la operacion?
Gracias por responder, lo que necesito hacer es
1.escribir 10 numeros
2.(10numeros)^2
3.y el resultado que salga se toman los 5 de enmedio y se vuelve a repetir el paso 2

engel lex

lo que describes no es claro...

escribes 10 numeros o 1 numero de 10 cifras?

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

EmmanuelTR9

disculpa te explico
escribir un numero de 10 digitos
ejemplo
1. 1234567890
2. (1234567890)^2 elevar al 2
3. Tomar 5 numeros de enmedio de lo que salga al elevar al 2

engel lex

cualquier numero de 10 cifras al cuadrado tendrá de 100 a ~122 digitos, sin librerias especializadas no podrás calcular eso y tomará un tiempo enorme en calcular... luego de eso, como decides cuales son los 5 del medio? en tu codigo asumes que es a partir del 3er digito, pero es mucho mas complejo que eso
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Serapis

No, Engel... has interpretado mal el enunciado (aunque incompleto y confuso)
1.234.567.890 al cuadrado = 1.524.157.875.019.052.100, es decir, elevar un número decimal al cuadrado, a lo sumo dupluca su número de cifras...

Básicamente el código casi está bien... le falta un par de detalles...

Entiendo que el bucle implica que se repite el proceso x veces...


bucle para k desde 1 a x veces
    cuadrado =semilla * semilla
    txtValor = cuadrado.toString
    listCuadrado.AddItem(txtValor)
    digitos = txtValor.length
    txtValor =txtValor.Substring((dígitos\2) - 3,5)
    semilla = txtValor.parseToLong
    listSemilla.AddItem(txtValor)
Siguiente

engel lex

#7
NEBIRE gracias por la aclaratoria y me disculpo por la confusion, en mi mente estaba elevando a x^x, efectivamente de 18 a 19 digitos (19 para mayor a 3162277660)

sin embargo los 5 del medio no son desde el 3ro son desde el dígito 7 u 8

0123456789012345678 (empiezo desde 0 para dejar clara la posicion en el array)

en cual caso usaría siempre un entero de 64 bit dividiría entre 10^7 y luego haría modulo de 10^5

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

EmmanuelTR9

Cita de: NEBIRE en 26 Febrero 2020, 09:50 AM
No, Engel... has interpretado mal el enunciado (aunque incompleto y confuso)
1.234.567.890 al cuadrado = 1.524.157.875.019.052.100, es decir, elevar un número decimal al cuadrado, a lo sumo dupluca su número de cifras...

Básicamente el código casi está bien... le falta un par de detalles...

Entiendo que el bucle implica que se repite el proceso x veces...


bucle para k desde 1 a x veces
    cuadrado =semilla * semilla
    txtValor = cuadrado.toString
    listCuadrado.AddItem(txtValor)
    digitos = txtValor.length
    txtValor =txtValor.Substring((dígitos\2) - 3,5)
    semilla = txtValor.parseToLong
    listSemilla.AddItem(txtValor)
Siguiente


gracias por responder, he intentado similarlo pero no, estoy usando visual studio 2019 para hacer el codigo pero no puedo hacer que funcione me podrias dar mas informacion

engel lex

que resultado obtienes? que resultado esperas?

es decir, con las correcciones de neribe casi esta listo
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.