elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Mensajes
Páginas: 1 ... 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [31] 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 ... 102
301  Programación / Java / Re: Ayuda con programación Orientada a objetos!!!! en: 14 Junio 2020, 00:44 am
Ayuda!!! Necesito el código del siguiente enunciado:

Por favor, lo necesito para antes de las 12:05AM del 15 de Junio (Hora Colombia)
Cualquier persona que pueda desarrollarlo.

Gracias
Claro que sí. Alguna cosilla más mientras esperas? Un café? Un refresco? No sé... Pide por esa boquita. :xD :xD

No se hacen tareas. Primero porque está especificado en las propias reglas del foro y segundo porque el reconocimiento de saber hacer el programa es para ti así que que menos que esforzarte en hacerlo y no pasar por delante de personas que se han esforzado más que tú sin haber dado un palo al agua, solo con exigencias.

Este tema no creo que dure mucho tiempo abierto. Espero que no vengas luego con que no sabes por qué lo han cerrado/eliminado.

Ánimo que todavía tienes unos diitas para hacerlo. :silbar: :silbar:
302  Foros Generales / Foro Libre / Re: Así es el grado de informática y matemáticas: por qué es tan valorado y dónde se en: 13 Junio 2020, 00:48 am
El problema,es que la educación esta preestablecida por las élites gobernantes, que son las que dicen que es lo que tiene que estudiarse, y lo que no, no se si me entiendes.
Exactamente, por desgracia así es. Y el problema no está solo en las materias que se estudian y cómo se enseñan (que también) sino en profesores sin ganas de enseñar que lo único que quieren es un sueldo de por vida sin dar un palo al agua, y otras muchas cosas.

No quiero desviarme del tema principal pero espero que las nuevas alternativas de enseñanza que están surgiendo gracias a Internet acaben eclipsando a la educación tradicional. Si la educación es buena, no tienes que obligar a nadie a asistir, a la gente le gusta aprender y el sistema tradicional lo que está haciendo es generar repulsión al aprendizaje.
Con más opciones serían los propios estudiantes los que podrían elegir la que más les beneficie y no como ahora que aunque hay alternativas al final siempre tienes que pasar por el sistema tradicional que es el que tiene el monopolio en cuanto a educación.
303  Foros Generales / Foro Libre / Re: Así es el grado de informática y matemáticas: por qué es tan valorado y dónde se en: 12 Junio 2020, 21:38 pm
Cuando terminé bachillerato, yo sabía que quería estudiar Ingeniería Informática aunque las Matemáticas siempre me habían gustado y se me daban bien así que las tenía ahí como segunda opción. Mi problema fue que llevaba una buena nota media antes de las pruebas de acceso a la universidad (yo fui uno de los novatos que nos comimos la EBAU cuando nadie sabía cómo se iban a hacer las cosas) y como tenía pensado hacer Ingeniería Informática, con sacar el mínimo en la prueba de acceso sabía que no iba a tener problemas para entrar donde quisiera.

Digamos entonces que me tomé dichas pruebas de acceso de una forma muy tranquila y mis notas no fueron malas pero tampoco todo lo buenas que podían ser. Cuando supe mi nota final de acceso, descubrí que tenía posibilidades para entrar en el doble grado de Informática y Matemáticas y me dije a mí mismo que era una buena oportunidad para no dejar ninguna de las dos de lado.

Me mudé yo solo a más de 700 km de casa, dejando todo atrás, para estudiar el Doble Grado de Informática y Matemáticas. La gente que me conocía me decía que estaba loco pero que seguro que lo podía conseguir.
Tuve que esperar varias listas de espera mientras que pude asegurarme una plaza en Ingeniería Informática a la primera. Al final, por miedo a perder mi plaza y quedarme sin nada, me acabé matriculando en Ingeniería Informática. Poco después me enteré de que en la siguiente lista que salió habría conseguido mi plaza en el doble grado. De todas formas me lo tomé como un año de universidad un poco más tranquilo para conocer el ambiente. Siempre podría cambiarme más adelante.

Después de 2 años de carrera acabé dejando la universidad y no fue por tener malas notas sino por desmotivación. En esos 2 años descubrí el mal funcionamiento que había en esa universidad (como seguro que también hay en el resto de universidades de España). Siempre he preferido el aprendizaje autodidacta, el aprendizaje de verdad. No eso que llaman "aprendizaje" que se resume en memorizar conceptos para después escupirlos el día del examen y acabar consiguiendo un título que acredita que sabes cosas que en realidad ni te acuerdas que un día las estudiaste. Y tener que pagar una pasta por una educación "gratuita"... :-\

Mi opinión: siempre se le ha dado demasiada importancia a los papelitos y a los títulos en vez de dejar a una persona que demuestre lo que sabe hacer.
Menos mal que esto parece que empieza a cambiar y espero que siga así.

¿A dónde quiero llegar con todo esto? Pues que en vez de sacar carreras, cambiarlas, moverlas, mezclarlas (y cualquier otra cosa que se os ocurra que hacen con ellas); lo que tenían que hacer era rediseñar el sistema educativo, al completo. El problema no está solo en las universidades, el problema viene desde abajo y está en todos los ámbitos de la educación. Se intentan inventar muchas cosas nuevas para mejorar la formación de un país pero nadie toca la base de todo y ahí es donde está el problema.

Supongo que algunos no llegaréis a leer este mensaje entero. Vaya chapa he soltado, verdad? :rolleyes: :rolleyes:
Pero bueno, me he quedado un poquito más tranquilo expresando todo esto que llevaba dentro. No es la primera vez que expreso mi descontento con el sistema educativo pero espero que algún día cambie.
304  Programación / Programación C/C++ / Re: Problema con bucle while en: 12 Junio 2020, 20:43 pm
Seguramente ese error aparezca solo al introducir caracteres alfabéticos (letras).
Esto sucede porque lo estás intentando guardar como un entero.

Si quieres aceptar cualquier entrada de caracteres tendrás que usar fgets() y recoger la entrada como una cadena de caracteres y luego ya manejarlo a tu manera: convirtiendo la clave en cadena o convirtiendo la entrada en número (comprobando claro que son caracteres numéricos).

Otro tema aparte es el uso de fflush(stdin) para limpiar el buffer de entrada. Esta función fue diseñada para limpiar el buffer de salida fflush(stdout) y no está hecha para el de entrada. Para limpiar el buffer de entrada utiliza otras opciones como:
Código
  1. while(getchar() != '\n');

Puedes aprovechar el código anterior para limpiar el buffer en caso de introducir caracteres. También se corregirá tu problema sin tener que usar fgets().

Suerte. :-X
305  Programación / Programación C/C++ / Re: AYUDA PROBLEMA C++ en: 12 Junio 2020, 02:42 am
Me parecía sospechoso que hubiese dos números que cumpliesen las condiciones cuando tu profesor había dicho que solo habría uno. (Puede ser que se equivocase, pero no lo creo).

Si te fijas, al principio del enunciado hay otro comentario:
Muy buenas a todos, me colocaron a realizar el siguiente problema: El numero, 1406357289, contiene todos los dígitos del 0 al 9.

si d1 es el primer dígito, d2 es el segundo dígito, y así sucesivamente. Encuentre todos los números entre 4130912867 y 4130992867 que cumplen las siguientes condiciones :
Código:
d2d3d4=406 es divisible por 2
d3d4d5=063 es divisible por 3
d4d5d6=635 es divisible por 5
d5d6d7=357 es divisible por 7
d6d7d8=572 es divisible por 11
d7d8d9=728 es divisible por 13
d8d9d10=289 es divisible por 17
Es cierto que hay dos números que cumplen con las condiciones recuadradas y estos son:
Código:
Numero valido: 4130952867
Numero valido: 4130959493
Pero si te fijas bien, solo uno de ellos cumple con la primera frase del enunciado (remarcada en negrita): que tenga todos los dígitos. Y este es el primero de los dos. Por lo tanto me parece que también tiene que darse esa condición y por tanto solo hay un número válido que cumpla todas las condiciones.
306  Sistemas Operativos / GNU/Linux / Re: Crear un lanzador (o acceso directo) en el escritorio de Ubuntu-Desktop en: 11 Junio 2020, 20:45 pm
Gracias #!drvy.

He hecho lo que indicas pero sigue sin funcionar, la única diferencia que hay ahora es que al pinchar dos veces seguidas sobre el “lanzador”, en lugar del mensaje que salía antes, ahora se abre el editor de texto y se carga el contenido del archivo “aplic.desktop”.

Un saludo.


Ahora mismo me has pillado trabajando con Windows y no me acuerdo exactamente dónde era pero sé que Ubuntu tiene una opción que si está marcada permite ejecutar los ficheros al hacer doble click sobre ellos y si está desmarcada, los abre con el editor de texto.
Puede ser en Preferencias de Nautilus. Siento no poder ser más preciso.

Suerte. :-X
307  Programación / Programación C/C++ / Re: AYUDA PROBLEMA C++ en: 11 Junio 2020, 19:28 pm
Ese código que tienes es una locura para lo que quieres controlar.

Mi recomendación es que hagas una función:
Código
  1. int subNumero(int numero, int inicio, int longitud);
Que le pasas el número completo y te devuelve un número que empieza en el dígito <inicio> y con una longitud de <longitud>.

Y para comprobar si un número n es divisible por x, se usa el operador módulo (%):
Código
  1. if(numero % 2 == 0)
  2.  cout << "El numero " << numero << " es divisible por 2" << endl;

Con esos dos consejos deberías poder mejorar bastante ese programa.
Inténtalo y cuando te surja algún problema coméntalo para seguir ayudándote.



PD: Otra opción es guardar cada dígito en una posición del array. Pero utiliza las estructuras del lenguaje para no tener que hacer el estropicio ese de las líneas 11-23:
Código
  1. const int NUM_DIGITOS = 10;
  2.  
  3. int main(){
  4.  int numero = 4130912867;
  5.  int digitos[NUM_DIGITOS];
  6.  
  7.  for(int i = NUM_DIGITOS-1; i >= 0; --i){
  8.    digitos[i] = numero % 10;
  9.    numero /= 10;
  10.  }
  11. }
Esto modifica tu variable número original. Si no quieres que se vea modifica, crea una función a la que le pases el número como parámetro por valor.
308  Programación / Programación C/C++ / Re: Programa que muestra la frecuencia de una lista de compras en: 9 Junio 2020, 20:54 pm
Por comentar algunas cosas del código, diré lo siguiente:

Bibliotecas

  • Si trabajas con C++, utiliza siempre <iostream> para entradas/salidas y no lo mezcles con <stdio.h> que es propia de C.
  • Las biblioteca propias de C (acabadas en .h) tienen su propia versión para C++ (eliminando el .h e incluyendo una c al principio. Ej -> <cstdio>).
  • En C++ el uso de memoria dinámica no se realiza con malloc() / free() sino con new() / delete().
  • La biblioteca <conio.h> no pertenece al estándar y por tanto hay máquinas en las que da problemas. La función típica de esta biblioteca es getch() que puede y debe ser sustituida por cin.get() en C++ (<iostream>) o por getchar() en C (<stdio.h>).


Novedades de C++ frente a C

  • La diferencia fundamental entre C/C++ es la capacidad del segundo de utilizar el paradigma de programación orientado a objetos. Aunque C permite el uso de structs, están son más limitadas que las clases de C++ ya que no permiten utilizar el principio de ocultación (declarar miembros privados). Usando clases con sus miembros privados y métodos o funciones miembro públicas para interactuar con los miembros de la clase, aumentas la seguridad del programa.
  • Además, como curiosidad, me parece que en C++ se puede omitir la palabra struct si no me equivoco cada vez que se hace referencia a ese tipo de dato.
  • Otra ventana de C++ es la aparición de strings. Sobre todo para facilitar el trabajo con memoria dinámica y no tener que desperdiciar espacio reservando los char[] de manera estática. Aprovecho ahora que hablo sobre las cadenas de char para decir que cuando se define una cadena char como parámetro a una función no es necesario aportar su longitud siempre que sea de una dimensión. Son números que no aportan nada al programa y que pueden complicar las labores de modificación del código. Y las longitudes que sí tienen que estar presentes es mejor guardarlas como constantes para facilitar su modificación y mantenimiento.


Organización del Código

  • Normalmente cuando ves un programa en C/C++, si quieres ver lo que hace de un vistazo rápido, buscas la función main(). En este caso esa función no aporta nada a cualquier persona que quiera leer el código. Hay que tener un término medio entre usar funciones y no usarlas. La función menu() debería mostrar las opciones, controlar que la opción es válida (opcional) y devolver la opción elegida. Y en el main() debería llamarse a esa función y a continuación tener el código principal, es decir, el switch con las opciones.
  • Además de eso, otro mal hábito es utilizar variables globales. El uso de variables globales es excepcional y casi siempre son constantes lo que se declaran de esta manera. Las variables deberían ser locales a la función en la que van a ser necesitadas.


No me enrollo más. Esas son algunas, si no todas las cosas que yo mejoraría de ese código.
Por lo demás es un código limpio y con comentarios que explican las cosas que se hacen.

Mucha suerte en otros proyectos. :-X
309  Programación / Programación General / Re: Casos de uso en: 8 Junio 2020, 14:00 pm
En primer lugar, no hagas doble post. Si quieres añadir cualquier información modifica el mensaje original.
Poner otro mensaje pidiendo ayuda de nuevo no va a solucionar nada. Si alguien te contesta lo va a hacer con la misma rapidez si es un mensaje que si son más.

Hola a todos tengo que realizar unos casos de uso según lo siguiente, entiendo que se tendrían que hacer 3, usuario, usuario registrado y administradores, pero no sé como realizarlo, los include y extends no entiendo muy bien como usarlos
Los casos de uso no son esos 3. Esos 3 son los actores que realizan los casos de uso. Para esto tienes que hacer un rectángulo que representa el sistema y dentro del rectángulo dibujar elipses con el nombre de cada caso de uso. Un caso de uso es una operación que puede realizar el sistema. Estos casos de uso se relacionan mediante líneas con el/los actor/es (que se representan fuera del rectángulo) que puede/n realizarlos.

Supón A y B dos casos de uso:
  • A --<extends>--> B significa que la operación del caso de uso B se puede ver complementada en algunas ocasiones por el caso de uso A.
  • A --<include>--> B significa que para completar la operación del caso de uso A siempre será necesario que el sistema ejecute el caso de uso B como parte de la operación principal.

Si necesitas más información, busca en Internet sobre diagramas de casos de uso y encontrarás más información. No es una ciencia muy exacta y menos cuando no se comprueba el resultado final con la ejecución de un sistema como el representado.
310  Programación / Bases de Datos / Re: Trigger complejos MySQL en: 5 Junio 2020, 21:24 pm
Hola de nuevo, el segundo trigger no se puede hacer, basicamente cuando haces un Insert la tabla se queda bloqueada y no podrias hacer otra accion como un delete seguida.
Y del primero no consigo hacer nada.

Trigger para que no permita introducir en Inventario una cantidad mayor que la que tiene ese producto en la tabla Producto:
Código
  1. DELIMITER //
  2. CREATE TRIGGER TR_Inventario BEFORE INSERT ON Inventario FOR EACH ROW BEGIN
  3.  DECLARE producto_stock INT;
  4.  SELECT producto.stock INTO producto_stock FROM producto WHERE producto.id_producto = NEW.id_producto;
  5.  IF(producto_stock < NEW.cantidad) THEN
  6.    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Error: Inventario';
  7.  END IF;
  8. END//
  9. DELIMITER ;

Trigger que no permita introducir en la tabla Producto cantidades negativas:
Código
  1. DELIMITER //
  2. CREATE TRIGGER TR_Producto BEFORE INSERT ON Producto FOR EACH ROW BEGIN
  3.  IF(NEW.cantidad < 1) THEN
  4.    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Error: La cantidad tiene que ser mayor que 0';
  5.  END IF;
  6. END//
  7. DELIMITER ;

He probado ambos triggers en una base de datos de prueba y funcionan. :silbar: :silbar:
Páginas: 1 ... 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [31] 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 ... 102
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines