|
3321
|
Programación / Programación C/C++ / Re: Duda sobre structs!!!
|
en: 10 Enero 2018, 03:23 am
|
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. 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; } }
|
|
|
3322
|
Informática / Hardware / Re: ¿Como saber si una placa base esta rota?
|
en: 9 Enero 2018, 23:11 pm
|
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.
|
|
|
3324
|
Foros Generales / Foro Libre / Re: Nomofobia. ¿Eres adicto al móvil? descúbrelo.
|
en: 9 Enero 2018, 02:04 am
|
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: 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'...
|
|
|
3325
|
Programación / .NET (C#, VB.NET, ASP) / Re: textbox con autocompletar desde la tercera letra?
|
en: 9 Enero 2018, 01:43 am
|
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...
|
|
|
3326
|
Programación / .NET (C#, VB.NET, ASP) / Re: Duda carga de objetos POO
|
en: 9 Enero 2018, 01:31 am
|
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...
|
|
|
3327
|
Foros Generales / Noticias / Re: Firefox 59 simplifica el control de notificaciones y tu privacidad
|
en: 8 Enero 2018, 15:32 pm
|
Es lo que vengo aconsejando a muchos conocidos desde hace la tira de años, que tapen la cámara con un simple post-it, de esos semitranslúcidos. ...sin embargo es enormemente criticable que el propio hardware, no traiga una simple ventanita deslizante, giratoria, etc... que imposibilite que incluso aunque un intruso llegara a activar la cámara, pudiera enfocar al usuario. Y dado lo sencillo y barato dle sistema, cabe preguntarse por qué... por qué no lo hacen. Es simple y llanamente: negligencia. Si un día utilizan tu cámara sin tu permiso, desde luego yo pondría una denuncia al fabricante, precisamente por negligencia, es algo tan simple y lógico de prever, que no ponerle remedio responde exclusivamente a negligencia. ...pero la gente se ha acostumbrado (YA) a tragar por el 4N0...
|
|
|
3329
|
Foros Generales / Foro Libre / Re: Nomofobia. ¿Eres adicto al móvil? descúbrelo.
|
en: 8 Enero 2018, 15:20 pm
|
mmm... "nomofobia"?. Ese palabro parecería tener sentido para un significado tipo: "fobia a los gnomos de jardín". aunque al caso, mejor si fuera gnomofobia.
En cualquier caso, el sufijo 'fobia' es miedo... sería la antítesis a la adicción...
Quizás la palabra adecuada fuera mejor algo como: "fonoadicto".
|
|
|
3330
|
Foros Generales / Noticias / Re: Grave error de MediaMarkt vendiendo móviles a precio de derribo de forma errónea
|
en: 8 Enero 2018, 04:54 am
|
Sin llegar a acusación, si no solo sospechas... Creo que Mediakarkt, realiza ofertas falsas con la única finalidad de captar clientes...
En dos ocasiones este año pasado, me ha sucedido ver una oferta que me pareció interesante y justo el mismo día de la oferta (o al día siguiente, pero en ofertas que duran entre 7 y 15 días)), intentar hacer la compra, con un subsiguiente mensaje de: "Stock agotado"... que sería la forma en que limitan la posibilidad de que alguien acceda a dicha oferta falsa, irreal... ...en esa línea es que creo que se encuentra este caso que se comenta en la noticia, solo que al poner la 'oferta falsa', han fallado (olvidado desviar) en dirigir el pedido a la respuesta de: "stock agotado"... lo habrán procesado y solo cuando se han dado cuenta de que no frenaron para esa 'oferta', es cuando han decidido liquidar por las malas el asunto...
|
|
|
|
|
|
|