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 - Serapis

#3001
Citarel comando mod me han dicho que no funciona para hallar el resto asi que...

Cuando un lenguaje carece de una función, toca implementarla.
entero = funcion Modulo(dividendo, divisor)
   entero n

    n = ParteEntera(dividendo / divisor)

    Devolver (dividendo - n)
fin funcion


Entonces tu función de paridad sin (simplificar), quedaría así:
buleano = funcion EsPar(valor)
    entero n
    n = Modulo(valor, 2)

    devolver (n = 0)
fin fncion

Igualmente puede recrears ela función inversa, EsImpar devolveindo (n=1)

Citar• Hallar la suma de los cuadrados de los 100 primeros números enteros impares.

entero = Funcion SumaCuadrados
    entero k,  suma 

    bucle para k desde 1 a 100
        Si EsPar(k) = FALSE luego  //se pide la suma de los impares
            Suma = (suma + k)
        fin si
    fin bucle

    Devolver suma   
fin funcion


Avanza, codifica y luego comenta donde tengas problemas, pero plantea dudas específicas, no el problema completo...
#3002
Como opinión, la de un científico, no vale más que la opinión de cualquiera.

Y si algo se ha de someter a pruebas, justo es que hasta que no terminen se hable de opiniones y no de resoluciones.
Por otro lado las pruebas, como todo le mundo sabe puedne ser bien hechas, mal hechas y negligentes. La negligencia es cuando unas pruebas bien hechas desestiman forzadamente pruebas críticas que arrojan luz, incidiendo en pruebas que a priori se sabe no van a aroojar diferencia alguna o significativa.

Y justo es que una vez acabadas las pruebas queden disponibles a todos y además a que otros científicos puedan realizar las mismas pruebas para un contraste.  Aunque esto siempre será algo limitado, por la limitación d epruebas o el daño que se produce si son numerosas.

Y aparte de todo eso, las conclusiones siempre son subjetivas al margen de las pruebas.
Un vaso a mitad de agua, para unos es un vaso medio lleno y para otros medio vacío, y jugando con esa subjetividad se puede llegar a afirmar algo rotundamente opuesto a lo que muestran las pruebas.

En todo caso, convendría dejar que finalicen las pruebas, el señor que comenta todo eso, ya dice que es su propia opinión e insiste en que hay que esperar a que finalicen ...

Concuerdo con Elektro en esos farsante que se montan el espectáculo, con el único fin económico y que imposibilitan toda prueba, pero bueno, tampoco es algo exclusivo de farsantes mindundis, el supuesto propio busto de Nefertiti, está también en tela de juicio, por las mismas causas (posible montaje basado en lo mismo, cuestiones económicas que datan de su 'hallazgo')... y es que la arqueología del siglo XIX y comeinzos del XX, no era muy distinto, abundaban los farsantes y a saber cuantas piezas hay en los museos que pasan por auténticas y en realidad son falsificaciones...




En cuanto al ADN, nadie puede garantizar que no sea extraterrestre, por cuanto nadie puede garantizar que el ADN humano, sea terrestre. Que vivamos aquí, no establece para nada, que no vengamos de otro sitio...
#3003
Yo en este tema estoy dividido.

Por un lado entiendo que la ley es clara. Si los taxis estñan establecidos como un servicio público y que tributa impuestos, no es ni más ni menos que respondiendo a un sistema de transporte legislado, para que no exista un caos... igualmente existen autobuses, trenes, avionbes, barcos... Luego no parece razonable conforme a la ley que exista otro medio (aunque sea nuevo y no previsto), que funcione al margen de la ley...

Y por otro lado, mi mente me dice "que se jodan"... aún recuerdo que desembarqué en el aeropuerto con la jaula de mi gato y unos simplemente no querían llevarte y otros directamente querían cobrarme 15 euros (iría en el maletero, igual que una maleta y siendo más pequeña que ella) ... la excusa es que podría mancharle el maletero... yo insistía que cuando viajaba desde la tarde antes no les daba de comer y beber lo justo, además que la jaula contenía bastante material absorbente y que eso no iba a suceder como no había sucedido en decenas de veces antes y en todo caso aceptaba pagar esos 15 euros si la situación 'temida' se producía, pero 'por C0J0N35'... también me acuerdo de aquella otra vez que tenía que llevar a un perro a al veterinario, llamé al teléfono de taxis, inforrmando, me pidieron el peso dela nimal (28-30)kg... y al cabo de un rato me devolvieron la llamada para indicarme que ningún taxista quería hacerlo (un perro que a fin de cuentas es equivalente a un niño de unos 5 años). también em acordé de otra vez hace muchos muchos años, donde viajaba con 'mujeres' y la consecuente y consabida inundación de maletas y bolsas (de esas que necesitas 5 manos), y ni siquiera pretendiendo pagar 2 taxis aceptaban... si no fue por un policía que después de vernos parados en la acera casi una hora y viendo como todos daban largas, obligó a uno (si bastaba solo 1), a cargarlo todo y llevarnos al aeropuerto...

No quiero acordarme de todas esas veces que enviabas a un amigo (extranjero), le decías que el taxi cobraba unos 20 euros desde el aeropuerto hacia una estación de autobuses y que tardaba apenas 15-20 minutos (según el tráfico), y luego a la noche te llamaban para decirte que les habian cobrado el triple, y "les habían paseado por la ciudad", asumiendo que como extranjero no la conocían...
Tampoco quiero acordarme de aquel taxista que me pidió una barbaridad y le dije: "vale, es muchísimo más elevado que otras veces, te lo pago, pero me extiendes la factura, que mañana miraré donde protestar, y acto seguido acabó aceptando lo que siempre se pedía y acto seguido se fue sin más...

En casos así, te acuerdas bien de que haya competencia para que no sean tan 'gamberros', aunque si quisiera que fuera una 'competencia sana', es decir legal y que tribute (como todos los demás).

De todos modos, creo que el negocio del taxi, es algo a desaparecer en una o dos décadas...
#3004
Sin tintes sangrientos, peor opino lo mismo...

Estamos en un punto donde la privacidad no solo está desapareciendo, si no que parece que es obligatorio que que gobiernos y empresas tengan acceso a ello.

El único refugio que va quedando es el cifrado, pero no pasarán demasiados años antes de que se prohiba crear-usar programas de cifrado.

La gente 'de la calle', suele conformarse pensando: "y que datos van a tener de mi, si no soy terrorista, ni he cometido delitos, ni..." Obviamente la gente de calle, no es consciente de todo lo que se puede llegar a hacer con datos en la mano...

Lo curioso es que las grandes organizaciones mundiales, que se supone que están para proteger los derechos de las personas, ni se pronuncian, una silenciosa callada... lo que equivalea decir que comulgan con la orientación que sigue, o lo que es lo mismo, están vendidos a la dominancia de las grandes corporaciones.

...preveo un futuro negro, pero aún así soy optimista, creo que las guerras del futuro, no van a ser de países contra países si no de ciudadanos contra sus gobernantes y cúpula empresarial, militar, etc... guerras intestinas a nivel planetario. Ahora cuantos años han de pasar para eso?... difícil saber, ¿¿¿15, 50??? . Quizás entonces la raza humana se verá libre de la lacra de la ambición ilimitada...
#3005
Sí... por algún lado le faltaba especificar: "un capítulo de..."
#3006
No entiendo yo, para qué permanecen en archivo las fotos de famosas que han pasado por cirugía, después de pasado cierto tiempo.
...y si fuere preciso por algún motivo guardar bastante tiempo dichas fotos, no entiendo porqué no las cifran con la cantidad de problemas de seguridad que se ven a diario...
#3007
Programación C/C++ / Re: ordenar arreglos
24 Octubre 2017, 16:18 PM
Hay varias formas de hacerlo

La más sencilla es:
1 - ordenar ambos arrays,
2 - Recorrer los arrays y verificar item a ítem si contienen el mismo valor
Si Array1(k) = Array2(k) luego iguales +=1
3 - Recorrer otra vez los bucles (pero desde el índice 1) y verificar que no hay ítems repetidos:
Si Array1(k) = Array1(k-1) luego RepesEnArray1 +=1
Si Array2(k) = Array2(k-1) luego RepesEnArray2 +=1

4 - Al final arrojas la cantidad de iguales (o distintos) hallados entre ambos arrays y la cantidad de repes en cada array, conforme a lo que te soliciten, que no queda claramente indicado...

Bueno, ya tienes las indicaciones adecuadas para empezar, ahora te toca escribir código....
#3008
Cuando señalas insertar (al inicio o al final), no debieras imprimir la lista, eso haría inecesario en el menú, la opción imprimir... (que yo añadiría esa opción al menú) bien que mientras diseñas si tengas activa esa línea para ir verificando que las operaciones se realizan correctamente...
entonces lo pondrías tras la llamada en el menú, antes del  Break...

El nombre de 'Final', no es para nada ilustrativo de su funcionalidad. Insertar, siempre es añadir delante de algún item, OK, pero al final puedes llamarlo simplemente Añadir... sin más expecificaciones, al añadir, siempre se añade al final.

Por último, no veo que lleves la cuenta de la cantidad de ítems en la lista... es más eficiente preguntar que 'Si Items=0', que 'Si Lista es null', y añadir al comienzo puede indicarse con un 0 y añadir al final con -1, y Añadir en cualquier otra posición (insertar), con cualquier otro valor entre 1 e ítems -2
Un control de la cuenta de nodos en la lista, aunque no es imprescindible, si es más que aconsejable, simplifica la lógica y funcionalidad de la misma a cambio de algo de código extra.



Y ahora yendo a tus dudas:
- Tu función 'Final' no está bien implementada... Trato de explicarte con un sencillo ejemplo, sea una lista con varios elementos, consideremos estos 3:  Marte -> Jueves -> domingo
vemos que domingo.anterior = jueves
y vemos que Jueves.siguiente = domingo
Ahora insertemos un elemento en medio, por ejemplo viernes.
Las operaciones a realizar serán 4, verás:

viernes.siguiente = domingo
domingo.anterior = viernes
Viernes.anterior = jueves
Jueves.siguiente = viernes

Es decir se necesita apuntar desde el nuevo elemento a los extremos donde se inserta, y se necesita apuntar desde los extremos donde se inserta al nuevo elemento. Siempre son 4 asignaciones (si está en medio)
Si el nodo a añadir es un extremo, solo necesita 2 asignaciones (si la lista doblemente enlazada no es circular)...




Modifico tu código a pseudocódigo para hacerlo más legible:
Esta función está bien, salvo la redundancia de establecer nulos, donde ya los hay y no llevar cuenta de ítems que tiene la lista.

   if (lista = Nulo)
       lista = q  //OK
       q.sig = Nulo  //Innecesario
       q.ant = Nulo  //Innecesario
   else
       q.sig = lista //OK
       q.ant = lista.ant; //Innecesario
       lista.ant = q //OK
    }
¿No cuentas los items que lleva la lista.... por qué?


Así tu función externa podría ser:

Funcion Añadir(dato, posicion)
  nodo n

  n.Dato = dato
  // o bien como en tu caso operas por consola, desde aquí solicitas la entrada del dato, 1 solo sitio para las 3 funciones internas (y retiras el parámetro dato de la funcion)

  Si (posicion=0) ó (Items=0) luego
      AñadirAlComienzo(n)
  PeroSi (posicion menor que 0) ó (posicion mayor o igual que Items-1) luego
      AñadirAlFinal(n)
  Sino
      Insertar(n, posicion)
  Fin si
  actual =n
Fin funcion

Y tus funciones internas serían ahora: AñadirAlFinal, AñadirAlComienzo, Insertar

Fíjate que ahora insertar exigirá localizar el ítem en la posición pedida. al caso actual es una buena estrategia, porque recordando su posición, puede partirse desde 0 hasta actual desde actual hasta 0, desde actual hasta último, desde último hasta actual, según quede más cerca de un nodo u otro de los 3 implicados: primero, actual ó último...

Reviso tu función 'Final' (Añadir):
Simplifico tu código hacia pseudocódigo, más sencillo de ver así...

funcion Final
   ...
   if(lista = Nulo)
       lista = q
       q.sig = Nulo //Innecesario
       q.ant = Nulo  //Innecesario
   else
       //3 líneas 3 errores...
       q.sig = lista.sig  //Innecesario, asignar nulo al final de la lista no es preciso, el nodo recién creado ya tiene su .siguiente en nulo. Pero además es un error.
       lista.sig = q  //NO lista.sig apunta al segundo nodo, no al último.
       q.ant = lista //NO, le estás diciendo que el anterior a este nodo es el primer nodo.
   }
¿Igual que la otra, no llevas cuenta de los ítems, por qué?
Fin funcion


Esta función te falla... porque
Una lista, basta que tenga el nodo 'inicial, pero si tienes una lista doblemente enlazada, debieras mantener referencia al primer y último elemento.
Cuando apuntas a lista (tu nodo lista), estás apuntando al primero nodo en ella, entonces lista.siguiente apunta al siguiente nodo en la lista, es decir al segundo nodo, no al último. Será el último solo si la lista tiene 2 ítems...
Entonces tu función Final, está insertando nodos incorrectamente... usa nombre días o de meses y haz las asignaciones en papel para ver como va quedando concada inserción, para entender el problema.



La implementación debe mantener referencia al primer y último nodo, y deja de llamar lista al primer nodo, porque eso te 'nubla la vista'.

Aquí una sencilla implementación con referencias al primero, último y actual nodos, además lleva la cuenta de ítems...
Estos son los miembros en la clase, debajo los métodos...

nodo Primero   //primer nodo de la lista.
nodo Ultimo     // Ultimo nodo de la lista.
nodo Actual     // Nodo actual, también podría ser el primero y el último

entero ixActual  // indice que ocupa el nodo en la lista.
entero Items   // Cantidad de nodos que contiene la lista actualmente.


Función externa para añadir nodos...
Con cada añadido, se hace actual al nodo añadido, y se conserva su posición.

Funcion Añadir(Posicion)
   nodo n
   entero dato

   dato = PedirDatoAlUsuario

   Si (Items=0) luego
       CrearLista(n)
       ixActual=0
   Sino
       Si (posicion=0) luego
           AñadirAlComienzo(n)
           ixActual=0
       PeroSi ((posicion < 0) ó (posicion >(Items-2))) luego
           AñadirAlFinal(n)
           ixActual= items
       Sino
          Insertar(n, posicion)
          ixActual= posicion
       Fin si
   Fin Si
   actual = n
   Items +=1
Fin Funcion


Añade el primer nodo a la lista.

funcion CrearLista (nodo n)
   primero = n
   ultimo = n  // vuando solo hay 1 nodo en la lista, es el primero y también el último.
Fin funcion


Añade un nodo al comienzo de la lista.

Funcion AñadirAlComienzo(nodo n)
   n.siguiente = primero
   primero.anterior = n
   primero = n
   Si (items=1) luego
       ultimo.anterior = n //el primero
   fin si
Fin funcion


Añade un nodo al final de la lista.

Funcion AñadirAlFinal(nodo n)
   n.anterior = ultimo
   ultimo.siguiente = n
   ultimo = n
   Si (items = 1) luego
       primero.siguiente = n // el ultimo
   Fin si
Fin si


Insertar un nodo en posiciones distintas del último y el primero.

Funcion Insertar(nodo n, entero posicion)
   nodo busca

   busca = BuscarNodo(posicion)

   n.anterior = busca.anterior
   n.siguiente = busca
   busca.anterior.siguiente = n
   busca.anterior = n    
Fin funcion


Busca desde el primero hasta hallar el nodo en la posición pedida.

nodo = funcion BuscarNodo(entero posicion)
   nodo n
   entero k

   n= primero
   mientras (k < posicion)
       n = n.siguiente
       k +=1
   repetir
   devolver n
Fin funcion


Búsqueda optimizada, basada en el actual... para una lista con pocos elementos no se nota, cuanto más crece la lista, más útil resulta...

nodo = funcion BuscarNodo(entero posicion)
   nodo n
   entero k, s

   Si (posicion <= ixactual) luego //está entre el primero e ixactual
       Si ((posicion-ixactaul) < (ixActual /2)) luego //si está más cerca de ixActual que de 0...
           n = ixactual  
           k = ixactaul
           s = -1
       Sino
           n = primero
           k = 0
           s = 1
       fin si
   Sino //está entre ixactual y el último
       k = (items-ixActual)
       Si ((k/2) => (k - (posicion-ixactaual))) luego // si está más cerca de ixActual que del final
           n = ixactual  
           k = ixactaul
           s = 1
       Sino
           n = ultimo
           k = Items-1
           s = -1
       fin si        
   Fin si
   
   Si (s = 1) luego //busca hacia arriba (itera sobre siguiente
       mientras (k < posicion)  // <> es distintode
           n = n.siguiente
           k +=1
       repetir
   Sino  //busca hacia abajo (itera sobre anterior)
       mientras (k>posicion)
           n = n.anterior
           k -=1
       repetir
   devolver n
Fin funcion


Dejo a tu cargo Imprimir(DesdePosicion, HastaPosicion), con valores Imprimir(0,-1) debería imprimir toda la lista.
#3009
Cita de: n1sen en 21 Octubre 2017, 18:22 PM
Una sintaxis simple, como Python y Ruby
Cuando uno decide crear un lenguaje nuevo, tiene la oportunidad dorada, de decidir como ha de ser su lenguaje y desterrar del mismo las tonterías que encuentra en otros lenguajes y añadir lo que cree que falta.

Si al final encuentras que tales lenguajes no contienen tonterías sobrantes, ni les falta nada, entonces es una pérdida de tiempo, pretender hacer un lenguaje prácticamente idéntico a uno ya "existonto"... Si es meramente por practicar, haz lo que muchos crea un lenguaje simple para una calculadora, sigue siendo un ejercicio, pero sin la pérdida considerable de tiempo y esfuerzo (como el que lleva un lenguaje complejo y completo).

Te recomiendo encarecidamente que te leas la notación BNF
Esto puede ilustrarte bastante:
https://tools.ietf.org/html/rfc5511  RBNF
https://www.ietf.org/rfc/rfc2234.txt ABNF
#3010
Java / Re: [AYUDA] Como reflejar una Matriz
23 Octubre 2017, 14:01 PM
No queda claro... ¿los valores son 4,3 y luego cambian de orden 3,4 o el valor es "43" y luego vale "34".?

Qués lo que quiere "reflejar", los valores o las posiciones?