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

#2821
ya apublicaste el mismo mensaje esta mañana aquí: https://foro.elhacker.net/programacion_general/ayuda_en_c-t478967.0.html

Y ta te respondieron allí... pero si prefieres te lo repito:

Igual que un médico no puede decirte con exactitud que te pasa solo con decir "doctor me duele", del mismo modo aquí con vaguedades no se puede dar indicaciones precisas.
#2822
Hardware / Re: Ampliar Memoria RAM
10 Enero 2018, 15:45 PM
Mira las especificaciones de la placa base, en ella se señala cuanta memoria es posible colocar, incluso te señala el reparto de módulos.

Además tener 4 slots, no implica siempre que están disponibles para colocar 1 módulo en cada zócalo, a veces es una placa que admite dos tipos de memoria, y para ello provee 4 slots, 2 zócalos son para un tipo de memoria y otros 2 son para otro tipo... cuando esto ocurre suelen ser de distinto color 2 a 2.

Si no tienes el manual de la placa base, descárgatelo de la web del fabricante, mete el modelo en su buscador ("Manual hf-mp01s" por ejemplo), una vez encontrada la pagina de descarga del modelo, aparte de los drivers y tal, vendrá el manual (no importa que venga en inglés si no lo dominas)... lo descargas, lo abres (generalmente es un pdf) y buscas la sección de la ram, allí indicará tanto el tamaño máximo, como velocidad y tipo de RAM que usa la placa... incluso a veces vienen expresadas con un esquema las diferentes posibilidades de conectarlas... según su tamaño.

Es importante también que te fijes en si es ECC o no. Si son ECC viene a decir que deben instalarse pares de módulos y además idénticos (en tamaño) y si no lo son en velocidad, ambos módulos correrán a la velocidad del menor de los dos. En esos casos si no se instalan en pares, no se reconoce la memoria.
#2823
Filtración, filtración... yo me creo más la autofiltración, con el propósito consabido de adelantar interés mucho antes de que den un paso y gasten una sola moneda. Vamos lo que siempre se ha llamado especulación, pero sin nadie a quien apuntar.
#2824
mmm... "autoridad legal para ello". Es más que cuestionable, que algo que decide una persona o grupo forzosamente deban cumplirlo millones, especialmente cuando ni siquiera es demostrable una razón de por qué debe ser violado la privacidad de allguien... 7800, son demasiadas personas al margen extremo de la ley (de las que hayan incautado sus dispositivos).

Tal como yo lo veo, la privacidad de un dispositivo es idéntico a la privacidad de tu mente. Y creo que solo debiera violarse un dispositivo, exclusivamente cuando se demuestre tu culpabilidad en algo y quede atestiguadoo que el dispositivo contiene información clave para el caso... no, sí por que si, ni mucho menos si no hay demostrada culpabilidad, sino solo acusación, y ni hablamos ya espiando dispositivos, sin que siquiera el dueño sepa de ello...

...porque cruzando ciertos límites los que deben ser agentes de la ley, no acaban siendo distintos de tipos fuera de la ley (pero auspiciados, ocultos y protegidos en el brazo de la ley).

Un país, donde el gobierno tiene excusa para hacer lo que le dé la gana (o peor dice que la tiene "autoridad legal" para hacer lo que quiera), sin importar lo democrático que diga ser, en el fondo es un idéntico a un país bananero regido por un dictador.
#2825
Una forma extraña de invocar una función. Pasas un estructura a una función, para luego devolver también sus dos elementos por referencia... no le veo el sentido, salvo que sea simplemente practicar... (aunque mala práctica).

Tu dilema se resuelve en evaluar tras la llamada el resultado...
Tu tienes:


Convocactoria1(array(j), cuali, cuanti)
mensaje cuali + cuanti


Pués evaluando a su regreso harías algo como:

Convocactoria1(array(j), cuali, cuanti)
Si (cuali = aprobado) luego
    mensaje cuali + cuanti
sino  //esto es, suspendido
    mensaje cuali  // omitimos cuanti, según tu propuesta de que no debe mostrarse.
fin si


Luego en la función preguntas por un valor, y tanto si es suspendido como aprobado, en ambos casos repites la línea... si debe ser así, esa línea basta ponerla fuera del condicional si, sí o sí, se va a consigar, o corrige eliminando la que no proceda...
Te lo marco en negrita.

Cita de: pablombf en  9 Enero 2018, 23:54 PM
void convocatoria1 (const Notas& n, int& cualitativa, int& cuantitativa){
    if (n.cualitativa1==suspendido){
        cualitativa=n.cualitativa1;    }
    else{
        cualitativa=n.cualitativa1;
        cuantitativa=n.cuantitativa1;    }
}
Es decir quizás quisieras hacer algo como esto (copio y pego y corijo in situ):

void convocatoria1 (const Notas& n, int& cualitativa, int& cuantitativa){
    cualitativa=n.cualitativa1;

    if (n.cualitativa1==aprobado){
        cuantitativa=n.cuantitativa1;    }
}
#2826
Cuando tienes problemas de funcionamiento, SIEMPRe, debes proceder en orden... y el orden correcto, es el que sigue la energía eléctrica...


Así que lo primero, es verificar que llega corriente al enchufe donde conectas y que él mismo manda la energía  suficiente y correctamente, luego conecta ahí otro aparato con un consumo similar al de tu pc y verifica que funciona correctamente, que no hay fallos de contactos y tal...

Lo siguiente en ese camino son los cables de alimentación, pruébalos en otro aparato, si funcionan, los sigueinte es la fuente de alimentación, remplázala  por otra que sabes que funciona (porque la acabas de ver funcionando en otro equipo). Asegúrate que la fuente de alimentación de remplazo tenga la potencia suficiente (si l tuya es de 1000w. una de 250w. seguramente no pueda con la demanda solicitada y tenga cuelgues).

Luego lo siguiente es la propia placa base, pero antes revisa los conectores de energia en la placa base... basta que estén flojos para que parezca que hay alguna avería, luego dentro de la placa base, revisa el procesador y luego el BIOS... Es conveniente al llegar aquí, hacer lo que te señala Simorg, retirar la placa de vídeo y probar con la que tenga la placa base-procesador. Retira cualquier otra placa periférica que pudieras tener, como una placa de sonido...
Asegúrate que los jumpers estén en su posición correcta, algo que debería ser así, si no los has tocado y antes funcionaba (hay quien se le ocurre la mala idea de cambiar mover jumpers, sin saber que hace y al final los deja mal desconfigurado o peor dañando la placa, por si suena la flauta, pero cn tecnología no convene jugar "a ver que pasa si... hago esto"...
Llegados hasta aquí, puedes afirmar que la placa base está dañada, el punto exacto es complejo, y carece de importancia si no se va a reparar.

Un modo rápido de ver si esta dañada, es cambiarla a otro equipo idéntico que funciona correctamente, usando los componentes de aquel... pero salvo que sea en una empresa, en casa va a ser complicado que alguien tenga dos equipos idénticos.
#2827
Devolver lo invertido, cuando el precio se ha triplicado... resulta gracioso... ya quisiera ver si harían lo mismo se el precio se hubiera "trividido"...
#2828
Cita de: Eleкtro en  8 Enero 2018, 15:45 PM
Curioso nombre, ¿se supone que "nomo" viene del latín como suelen hacer los científicos al ponerle nombre a las fobias y demás?, por que yo no le encuentro relación alguna entre "nomo" y teléfono móvil...

A ver si algún experto nos ilustra de donde viene eso de "nomo", creo que nisiquiera en la wikipedia hacen referencia a ello...

EDITO: pues si, si que lo explica en la wikipedia, y sabiendo ahora el significado, me parece una soberana gilipollez usar lo de "nomo" para describir una adicción de cualquier tipo...

Saludos
Curioso... en la wiki española pone algo muy distinto:

Citar
La nomofobia es el miedo irracional a salir de casa sin el teléfono móvil.​ El término, que es una abreviatura de la expresión inglesa "no-mobile-phone + phobia"

Vamos, que ahora los alcohólicos podrían llamarse: "noetilfóbicos"... siguiendo el mismo esquema... parece que desconocen el significado del sufijo 'filia'...
#2829
En el evento 'changed' compruebas la cantidad de caracteres que lleva escritos, si es igual o mayor que la cantidad deseada (3 en tu caso), buscas en una colección de textos que quieras buscar (se supone que es una colección que mantienes internamente o externamente) y extraes una subcolección que coincide con ese patrón, si la colección devuelta contiene al menos 1 elementos, lo cargas en una lista que haces emerger ('popup'), debajo del textbox (en general, aunque también vale bajo el cursor si no está muy alejado del textbox).
Si no se usa un método popup, todavia puede ser fácilmente imitado, con una objeto invible con un alto para 5 ítems (o los que tu quieras, si son muchos mejor una lista, para que tenga scroll, sin tene rque porveerlo tú), en tal caso, si el patrón del usuario devuelve entradas, las pegas al control que actúa de contenedor, lo posicionas bajo el textbox, en primer plano y lo haces visible. Luego cuando el usuario seleccione un ítem de la lista, lo copias al textbox y haces invisible la lista. Un banderín debiera indicar 'seleccionado', para luego desactivar ya mostrar la lista, mientras no se borre la entrada, o bien ocultarlo simplemente cuando no coincida el patrón (no se encuentre coincidencias), y cuando se pulse en un ítem de dicha lista. y si se vuelve a cambiar el contenido del textbox, nuevamente operar como se ha indicado...


Al caso un control 'ComboBox' ya hace todo eso por tí mismo, con la salvedad que muestra la lista completa que contiene... es decir avanza hasta el ítem coincidente con la entrada en la caja de texto, pero muestra todos, incluso aunque no coincidan. Pero vamos te ahorra mucho trabajo usarlo (con respecto a montarlo por tu cuenta como te comentaba en el párrafo anterior). Tu solo debes encargarte de mantener la lista que debe contener la parte de lista del combobox (por ejemplo los messes del año, y luego el usuario escribe 'm' en la caja de texto, se selecciona marzo, cuando avance a 'ma' todavía sigue en marzo, pero cuando avance a 'may' ya se selecciona mayo.

Otra diferencia de este control, respecto de lo que tu quieres es que la selección busca con cada carácter entrado, no es posible indicar como preciso x caracteres... podría desactivarse la parte de lista del combobox, hasta que tenga 3 caracteres, pero eso exige subclasificar o bien modificar la herencia del control, en ambos casos es mucho trabajo para tan poca cosa. Si requieres que sea así, mejor acometer lo señalado en el primer párrafo...
#2830
No importa lo complejo de un sistema, la cuestión es que solo se 'carga' lo que se necesita usar. Por ello el diseño debe ser eficiente.

Las dependencias deben ser realistas... si es objetiva y realmente dependiente, se hace dependiente, si no, no.

Una rueda tiene atributos, como numero de radios, diámetro, ancho, número de tornillos, marca, etc... luego es razonable que todos esos atributos sean propiedades de las ruedas. Luego la cargar una rueda (crearla, referenciarla) todos sus atributos estarán disponibles. Y todo vehículo tiene una cierta cantidad de ruedas, luego las ruedas será algún tipo de colección, que tienen todos los vehículos, pero que cada implementación de vehículo tiene un valor diferente. Sin embargo si cambias una rueda, deberá del mismo tamaño que el resto, esto es debe encajar... así que debiera haber constructores específicos para cada tipo de vehículo.

Piensa con cosas cotidianas, manejables que puedas fácilmente entender el porqué de ello.
Un simple ejemplo:


Interfaz Vehículo
    atributo clase Motor
    atributo coleccion Ruedas
    atributo coleccion Puertas

    atributo Motorizado
    atributo TienePuertas
    atributo Velocidad
    atributo EstaEnMarcha
    atributo NumeroRuedas
    atributo VelocidadMaxima
    atributo Color

     metodo Acelerar
     metodo Frenar
     metodo Parar
     metodo Arrancar
Fin interfaz

Una interfaz (es una clase que) define una plantilla básica y que luego cada implementación puede particularizar.



Clase Bicicleta Implementa Vehículo
    atributo clase Motor
        Read = Nada
        Mensaje "El vehículo bicicleta no tiene motor"
    fin atributo

    atributo coleccion Ruedas
        Read(i)
            Si ((i=0) ó (i=1)) luego
                Devolver Ruedas(i)
            Sino
                Mensaje "El vehículo bicicleta solo tiene 2 ruedas, no puede proporcionarse la rueda" + i.Tostring
            fin si
        fin Read
    fin atributo

    atributo coleccion Puertas
        Read = Nada
        Mensaje "El vehículo bicicleta no tiene puertas"
    fin atributo

    atributo Motorizado
        Read = p_Motorizado
    fin atributo

    atributo TienePuertas
        Read = p_TienePuertas
    fin atributo

    atributo Velocidad
        Read = p_Velocidad
    fin atributo

    atributo EstaEnMarcha
        Read = p_EstaEnMarcha // ó: (p_velocidad>0)
    fin atributo

    atributo NumeroRuedas
        Read = p_NumeroRuedas
    fin atributo

    atributo VelocidadMaxima
         Read = p_VelocidadMaxima
    fin atributo

    atributo Color
        Read
            devolver p_Color
        fin read
        Write (c)
            p_color = c   
         fin write
    fin atributo


    metodo Acelerar
        Si (p_velocidad = 0) luego p_EnMarcha = TRUE
        p_velocidad +=1
     fin metodo

     metodo Frenar
        Si (p_Velocidad >0) luego
            p_Velocidad -=1
            Si (p_Velocidad = 0) luego p_EnMarcha = FALSE
        fin si
    fin metodo

    metodo Parar
        p_Velocidad = 0
        p_EnMarcha = FALSE
    fin metodo

    metodo Arrancar
        Si (p_EnMarcha = FALSE) luego
            p_Velocidad = 20  //por ejemplo...
            p_EnMarcha = TRUE
        fin si
    fin metodo

     metodo Nueva(color)  // Crear
         p_VelocidadMaxima = 65
         p_NumeroRuedas = 2
         p_Motorizado = FALSE
         p_TienePuertas = FALSE

         p_Color = Color

         Ruedas = nueva coleccion
         r = nueva Rueda(diametro=650, radios=50, ancho=5, ...etc..)
         r.Situacion = Delantera
         Ruedas.añadir(r)

         r = nueva Rueda(diametro=650, radios=50, ancho=5, ...etc..)
         r.Situacion = Trasera
         Ruedas.añadir(r)
   
       
         ...etc...
     fin metodo

     atributo NumeroDePiñones
     atributo NumeroDePlatos
fin clase


Como se puede ver algo simple, pero fácil de entender y seguir el ejemplo... tiene varios atributos de solo lectura, y tan solo el color es lectura y escritura. Como es una bicie, no tiene motor ni puertas, además fuera de la interfaz que implementa se han añadido dos atributos aparte, NúmeroDePiñones y NumeroDePlatos... faltaría a la interfaz un método 'cambiarDeMarcha' y añadir un atributo 'NumeroDeMarchas'... la bicileta también tiene...

Como ves cuando se 'carga' un vehículo, con él se carga todo lo necesario, porque forma un 'objeto', todo englobado en la clase, un único objeto engloba a todo, pero puede estar formado por varios objetos, un motor podría ser otro objeto en sí mismo, lo mismo que las ruedas y las puertas... básicamente cualquier cosa que sea más compleja que una mera propiedad. Fíjate como aunque no hemos definido una clase Rueda, al crearla sin embargo le estamos pasando algunos atributos necesarios para crearla, y tras ello, incluso modificamos un atributo (donde está situada la rueda), que no se incluye en el 'constructor'... en cambio al crear el objeto bicicleta, solo se reclama el atributo color, el número de ruedas es prefijado por el diseño propio de la bici, lo mismo sucede con 'motorizado' y 'tienepuertas'.  Un diseño mejor sería tener un atributo llamado NumeroDePuertas, en sustitución de 'TienePuertas', ya que 'número identifica cuantas son, y al caso '0', es lo mismo que 'no tiene'. Es decir una primera aproximación se define y luego de repensarlo haces cambios y ajustes...

Como ves no es necesario cargar nada más que lo que respecta al vehículo... pero eso está en su propio diseño. si ahora creas un objeto ciudad, tendrás por un lado objetos calle, objetos edificios y objetos vehículos, incluso objetos garaje.
Cada uno de ellos sería una colección, pero incluso así, una ciudad tendría atributos como 'nombre', 'extension', 'ubicacion', etc... pero es necesario cargar todos los vehículos de la ciudad?... No, tan solo los de la calle actual.
Siendo calles una colección de la clase 'Calle', y poseyendo cada calle una colección vehículos (que circulan por ella), bastaría cargas solo esos. A su vez cada vehículo podría tener un atributo 'calle', para referenciar al objeto calle en el que se encuentra.
Cuando se cambia de calle (otra distinta), se descarga la previa para cargar la nueva...
Intenta diseñar un objeto calle, edificio y ciudad.

Una colección es una lista de objetos que puede ser tanto homogéneos como heterogéneos, el diseño estbalece lo deseable y al caso, suelen abundar las colecciones cuyo contenido son del mismo tipo "Colección de tipo x"... una colección tiene métodos tales como: añadir (al final), eliminar (del final), insertar (en cierta posición), Borrar (de cierta posición), vaciar (por completo), listar (desde x hasta y), enumerar (todos), Devolver (el enésimo objeto en la colección), y algunos más complejos como 'UnirAOtraColeccion, Clonar, Copiar, etc...
y suele tener atributos del tipo: Vacia, Cantidad, Tipo para señalar si la colección está vacía, cuantos objetos contiene y el tipo de objetos que aloja. Incluso puede hacerse uno como actual y tener un atributo IndiceActual, que puede ser leído y cambiado...
Según la necesidad se crea o no, por ejemplo en una bicicleta, la colección ruedas, no precisa un atributo 'indiceActual', además siendo sólo 2 es fácl acceder a una y saber cual de ellas es (trasera, delantera), pero (por ejemplo) en una ciudad saber el nombre de la calle actual seleccionada, si resulta conveniente... ya que por ejemplo podría ser deseable 'conducir' un vehículo a dicho destino.
Así, un método Conducir (a la calle x)... movería un vehívulo hacia dicha calle, haciéndolo más complejo, debería encontrar el trazado desde su ubicación actual hasta el destino, y al llegar allí detenerse  y avisar...

Piensa en objetos de la vida real y trata de 'visualizarlo' todo desde esa perspectiva de la manipulación, propiedades que tienen y lo que se puede hacer con ello...