Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - fzp

#31
Cita de: Supertocho80 en  6 Diciembre 2021, 16:45 PM
espero se ser bienvenido en este foro, gracias
Eres bienvenido.

Cita de: Supertocho80 en  6 Diciembre 2021, 16:45 PM...tiene 2 usuarios y uno es administrador y yo uso el otro, querría saber la contraseña de administrador...
Pregúntasela al administrador.

Cita de: Supertocho80 en  6 Diciembre 2021, 16:45 PM
... porque no me deja ejecutar ningún programa y solamente sirve para búsquedas en la web y poco más...
A lo mejor es que el administrador -que es quien manda en la red- quiere que los usuarios (o sea, tú) lo único que hagan sea "búsquedas en la web y poco más"...  :silbar:
#32
Programación C/C++ / Re: Ayuda ejercicio clase c++
6 Diciembre 2021, 13:25 PM
Te están pidiendo que muestres por pantalla la representación de un número complejo a partir de sus partes real e imaginaria. Por ejemplo si la parte real es 3.3338 y la imaginaria es 15.9376, la pantalla debería mostrar lo siguiente:
3.3338 + 15.9376 i

Y te piden que lo hagas a través de una función llamada "muestra_complejo", de tipo void y que reciba como argumentos las partes real e imaginaria en formato double.

Por tanto tienes que programar una función "muestra_complejo" que recibiendo dos números en formato double -preal y pimag-, y a través de las funciones que C++ tiene para imprimir en pantalla, sea capaz de imprimir por la misma algo como: preal + pimag i. Natrualmente no las palabras "preal" - "pimag", sino los valores numéricos correspondientes.
#33
Foro Libre / Re: esta altura es normal?
5 Diciembre 2021, 17:45 PM
Primo de win_7; no. Me juego lo que sea a que es win_7 con otro nick. (habrá aprendido a entrar con otra IP via VPN o lo que sea).
#34
Dudas Generales / Re: dudas amazon
5 Diciembre 2021, 17:42 PM
Cita de: inma55 en  5 Diciembre 2021, 13:09 PM
¿por qué se necesita tener cuenta par poder comprar?

Porque es su negocio y su web y punto. Así lo piden y así es como se hace. Ni a ti ni a nadie tienen porqué darte explicaciones. ¿No quieres comprar en esas condiciones?... pues te buscas otra tienda. Punto.

Cita de: inma55 en  5 Diciembre 2021, 13:09 PM
para comprar en las demás webs,te exigen tener cuenta?

En unas si y en otras no; ¿y qué? Que si estás conforme vale y si no que cojas la puerta y te abras. Punto.


Cita de: inma55 en  5 Diciembre 2021, 13:09 PM
Es que no lo acabo de entender.

Que no es cosa de que lo entienddas o no. Que no te tienen por qué dar explicaciones de nada. Que son lentejas. Si quieres las tomas y si no las dejas. Punto y pelota.
#35
Pues -una vez más- tengo que autocorregirme. Dije antes:

Cita de: fzp en 30 Noviembre 2021, 23:24 PM
Así que en este segundo caso mi enfoque es el mismo que ya dije en mi primer mensaje: no existe forma (o al menos a mi no se me ocurre) de encontrar el término general de una sucesión de números naturales, aunque se sepa que corresponden a una fórmula polinómica.

Pues ahora he visto que sí que se puede. He estado dándole vueltas al asunto y me parece que sí que hay una forma. Aunque, éso si, nos tienen que dar un número mínimo de elementos de la sucesión de la fórmula polinómica, y ese número mínimo es: suponiendo que el máximo exponente de ese polinomio es "k" (n^k) nos tendrán que dar como mínimo k + 2 términos de la sucesión.

Desde luego no he conseguido la demostración general, pero he probado varios casos particulares y parece que sí que funciona. La cosa es que me dió por probar cosas en una hoja de cálculo, y me dió por por poner en una columna los términos de una sucesión, y al lado poner otra columna con las diferencias entre términos 2º-1º, 3º-2º, 4º-3º,... etc. Por ver si variban o no. Y luego seguí haciéndolo con columnas adyacentes respecto de la columna anterior. Y en todas se llega a una columna en que las diferencias entre términos (de la columna anterior) son una constante. Y cuando se llega a ese punto, el número de columnas que hemos tenido que hacer es siempre igual al máximo exponente del polinomio que da origen a la sucesión de números.

Voy a explicarlo mas detalladamente y luego pongo un ejemplo que se pueda seguir. El método es el siguiente. Yo lo he hecho con una hoja de cálculo -pero igual se podría programar-. Pones en una columna los términos de la sucesión que te han dado, haces una columna al lado (a la derecha) con las restas: 2º término - 1º término, 3º término - 2º término; y así sucesívamente. Y después repites la operación con otra columna nueva a la derecha de la misma forma: 3º término - 2º término, 4º término - 3º término, ... etc. Pues bien, llega un momento en que en la nueva columna que está haciendo todos los términos son iguales. Ahí es dónde encuentras el exponente máximo de tu polinomio (en n). Si has necesitado "k" columnas tu polinomio tendrá como exponente máximo (k-1); ésto es así debido a que hay un exponente 0. Entonces, si las constantes se producen en la columna 9ª quiere decir que tu polinomio tendrá como máximo exponente 8 (0,1,2...8). En general, si tienes "k+1" columnas, sabes que tu polinomio tiene exponentes entre 0,1,... k.

Una vez que has llegado a ese punto ya sabes que tu fórmula polinómica es del tipo:
a0*n^0 + a1*n^1+ a2*n^2+... +ak*n^k

A partir de ahí cómo puedes calcular todas las potencias de los números naturales (n = 1, 2, 3,...) puedes plantear un sistema de ecuaciones lineales c donde las incónitas son a0, a1, a2,... y los valores que hacen que se cumplan las ecuaciones son los valores que te han dado como términos de la sucesión.

Sé que así es un poco complicado, pongo un ejemplo.

He preparado una función polinómica  (4*n^5 - 3*n^2) que indico en la siguiente imagen:



En ella indico en la columna A los números naturales y en la columna B los términos de la sucesión (los que nos darían como datos: 1, 116, 945, 4048,...).

Pues bien a partir de esa columna B que nos dan como dato, nosotros hacemos una columna C donde escrimos las diferencias entre términos consecutivos: C3 = B3 - B2; C4 = B4 - B3; C5 = B5 - B4;...

Ahora volvemos a hacer lo mismo en una nueva columna D con respecto a los datos de la columna C:
D4 = C4 - C3; D5 = C5 - C4;...

Y así sucesívamente... ¿hasta cuando? hasta que una columna nos de una constante. En este caso la columna G ya nos da como resultado de las diferencias de la columna anterior un valor constante (480). Ahí paramos de hacer más columnas.

Pues bien como tenemos 6 columnas (contando desde la 1ª en que nos dieron los datos de la sucesión), quiere decirse que nuestro exponente máximo es 6 - 1 = 5. Ello es porque también hay un exponente 0. Por tanto nuestra fórmula polinómica tiene que ser del tipo:
sn = a0 + a1n^1 + a2n^2 + a3n^3 + a4n^4 + a5n^5
siendo sn el término general de la sucesión.

Entonces, como podemos calcular las distintas potencias de n^1, n^2,... para n=1, n=2,...
con 6 incógnitas (a0, a1, a2, a3, a4, a5) quiere decirse que podemos montar un sistema de 6 ecuaciones lineales con 6 incógnitas.

Eso lo pongo en la siguiente imagen:



En ella he expresado en forma matrical el sistema de ecuaciones lineales:
-en A24-A29 los nºs naturales
-en B23-G23 los exponentes (0-5)
-en B24-G29 la matriz de coeficientes del sistema (los productos de los nºs naturales por los exponentes)
-en H24-H29 las incógnitas
-en I24-I29 los valores que resuelven el sistema de ecuaciones... que a su vez son los que nos han dado como datos

Ahora la resolución del sistema es bastante fácil dado que Calc (LibreOffice) ofrece una función que nos da directamente la matriz inversa de otra dada. Esta matriz inversa nos la la Calc en B31-G36. Y ya no hay nada más que multiplicar esta matriz por la de los valores que resuelven el sistema (I24-I29), cosa que también Calc nos proporciona una función de matrices para hacerlo por nosotros.

El resultado está en I31-I36. Como puede verse los valores no son totalmente exactos. Es el problema de la resolución de matrices, que los errores de cálculo son acumulativos. Pero puede verse que los valores con exponentes -10, -11, -12 son prácticamente = 0. Y que nos queda entonces que los valores de los exponentes n^2 y n^5 son, respectivamente: -3 y 4. Como en la ecuación original de la que partimos.

Como digo, no tengo una demostración general de que ésto sea siempre así, pero en los casos particulares que he visto, funciona. Parece que que en cada columna de diferencias se van perdiendo los terminos de exponentes de mayor a menor hasta que en la última columna nos aparece el exponente 0 y éso da lugar a una constante. Pero ésto son sólo especulaciones mías.

El porqué nos tienen que dar al menos k+2 términos de la sucesión (siendo k el valor del exponente máximo. Pues porque tendremos exponentes desde 0 hasta k (k+1) y porque necesitaremos al menos un valor más para concluir que en la última columna de la derecha se repite el valor. Si sólo tuviéramos el primer valor donde aparece la constane no lo podríamos saber, necesitamos al menos un término más para saber que se repite y que, por tant, es constante.

EDITO: ya me he dado cuenta de porqué se van reduciendo los eponentes en cada columna a la derecha. Al restar un elelmento de su anterior estamos restando un polinomio de n con exponentes 0, 1, 2,..., k de otro (n+1) con los mismos coeficientes. Ello hace que estemos restando un término en ak*n^k de otro término ak*(n+1)^k. Pero, a su vez el término ak(n+1)^k puede escribirse cómo: ak*n^k + otro-polinomio-de-grado-(k-1). Con lo cual los términos ak*n^k se cancelan y por eso en la columna de la derecha solo quedarán exponentes (k-1). Al ir repitiendo en las sucesivas columnas de la derecha la misma operación, van desapareciendo los sucesivos exponente hasta quedar exponente 0 y por éso al final queda una constante, y las veces que hemos tenido que repetir la operación nos indica el exponente máximo del polinomio.
#36
Comprendido. Gracias. Explicación detallada y pormenorizada. Es muy de agradecer el tiempo dedicado a ella.
#37
Tengo entendido que la rapidez de las operaciones de lectura/escritura en disco dependen de si se hacen varias en bloque o como datos aislados uno a uno. No sé seguro si ésto es así -y menos en los SSD-, es lo que yo tenía entendido; pero si no es así se puede ahorrar la lectura de lo que sigue.

Dado por cierto lo anterior lo que quiero saber es si el compilador o el Sistema Operativo adaptan esas operaciones a la memoria disponible -de una forma transparente para el programador- o debe ser éste quien programe esas operaciones de la forma más eficiente.

Lo aclaro con un ejemplo concreto. Supongamos que un programa hace una multiplicación de matrices que están almacenadas en archivo en disco y que, por su dimensión, no caben en la memoria del ordenador y, por tanto, no pueden leerse de una tacada y operar con ellas en memoria, guardar el propducto también en memoria y al final grabar en disco el resultado de una vez.

Lo más fácil para el programador -pero quizá no lo más eficiente en tiempo de ejecución- es mediante bucle leer un dato de fila de una matriz, leer un dato de columna de la otra, multiplicar y acumular el producto, proceder igual con el siguiente elemento de fila, el siguiente de columna, volver a acumular el producto y cuando se haya terminado el producto fila x columna grabar el resultado en disco; y volver a proceder con fila-columna.

La pregunta es: ¿si se programa de esa forma, en tiempo de ejecución, se ejecuta también así o bien al compilar, o al ejecutar el S.O. realizan las operaciones E/S (disco) en bloques según la RAM disponible y hacen esas operaciones en pequeños bloques en RAM?

¿O bien es responsabilidad del programador -si quiere mejorar la eficiencia- el prever más bucles adicionales y más arreglos adicionales que realizen, por ejemplo, lectura de 100 datos de fila, 100 de columna (el 100 es un ejemplo, podría ser otro), los almacenen en en RAM, operen con ellos, realicen otras 100 lecturas, etc., hasta terminar con fila-columna, almacenar en otro arreglo (de otros 100 datos), proseguir multiplicando, cuando ya tenga 100 resultados escribirlos de golpe en el disco... y proseguir hasta acabr el producto de las matrices?

En resumen: que si el programador para mejorar la efciencia tiene que programar (valga la redundancia) las operaciones de lectura/escritura en bloque adaptados a la RAM, o puede confiar esa labor al compilador o al S.O.: en tiempo de ejecución de forma transparente para él.
#38
Este enlace creo que no se ha citado:

http://www.abandonsocios.org/
#39
Cita de: FFernandez en 30 Noviembre 2021, 23:53 PM
...
Ya podrás opinar, criticar andarte por las ramas troleando un post que podría llegar a ser interesante.  Con tu nivel cuando te diga que la factorización no es el único camino...
...  Estaba motivado a compartir pero veo que hay poco interés...

Pues es una postura que no entiendo. Si tienes ideas que aportar -interesantes- y que podrías compartir, no veo porqué se las niegas al resto de foreros. ¿Qué más te da lo que yo pueda pensar?

Si el hilo puede llegar a ser interesante seguro que habrá un buen número de foreros que lo lean y contribuyan e intercambien opiniones. ¿Qué tiene que ver lo que piense u opine uno solo, como yo? ¿Por que alguien me contradiga ya voy a darme la vuelta e irme. Una persona que se vista por los pies, madura, no se deja impresionar por las opiniones de otra y no actúa así. Al menos no por la opinión de una única persona (si ve que son muchas lo lógico sí que es pensar si a lo mejor los demás tienen razón).

No sé, no quiero criticar por criticar, pero me parece una postura algo "infantiloide". El foro no está para el lucimiento de nadie y que todos tengan que decir:"qué guay lo que has escrito". A todos nos han dicho alguna vez (o hemos dicho a otros) comentarios en contra, quizá a veces de forma algo exabrupta. Pero no por éso tenemos que decir: "¡ea! pues ya no participo, ya no digo nada más".

Como ya he dicho, si lo que aportas es interesante, les puede ayudar a otros, y lo encuentran útil, o simplemente les apetece discutir sobre ello, pues me imagino que te contestarán al hilo y se podrá mantener activo.

¿Porque otra persona no esté de acuerdo con lo que digo (o incluso me lo diga de forma que yo interpreto poco educada) ya voy a privar a los demás foreros de algo que yo creo importante, útil o simplemente interesante?. Lo dicho. Lo veo algo de "niño chico" -poca personalidad- y de muy poco interés real por el resto de foreros.


#40
Programación C/C++ / Re: Ayuda con función setw()
2 Diciembre 2021, 15:40 PM
Creo que sería mejor, para encontrar ayuda, que incluyeras el código que quieres revisar en lugar de poner un enlace. Es tan fácil como copiar/pegar (de tu código fuente) y despues seleccionar todo el código y aplicarle una etiquita GesSHI (arriba a la derecha de las opciones de edición de mensajes).

A la gente -en general- le da pereza descargar algo de un sitio externo (cuando podrían verlo aquí sin más problemas). Y tampoco lo necesitas, ya que el código que incluyes en el enlace no es muy extenso y entra dentro de los límites que se pemiten en el foro. Mensajes excesívamente extensos no son son permitdos, pero el tuyo (incluyendo el código) me parece que encaja perfectamente en la longitud permitida.

Por tanto yo te aconsejaría que editaras tu mensaje e incluyeras el código -que está en tu enlace- (y no te olvides de las etiquetas GeSHi), y yo apostaría que casi al 90% de probabilidad recibirás ayuda; y probablemente no solo de una persona sino de varias.