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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ... 102
121  Programación / Programación C/C++ / Re: [C][isdigit] Pequeña cuestión función isdigit en mi programa en: 29 Abril 2021, 21:28 pm
Tienes que convertir ese parámetro a un número positivo por ejemplo como te ha indicado MAFUS unos mensajes atrás:
Código
  1. /*El 1º parámetro siempre va a ser la longitud de la clave*/
  2. if(sscanf(argv[1], "%u", &longitud_clave) == 0) {
  3.    fprintf(stderr, "%s\n", "El primer parámetro debe ser un entero. Indica la longitud de la clave...");
  4.    exit(EXIT_FAILURE);
  5. }

EDITO: La variable longitud_clave tal y como se utiliza (y se debe utilizar) en el código citado en este mensaje debe ser de tipo unsigned int, es decir, entero sin signo. Lo que quieres guardar ahí es un número positivo con la longitud de la clave. Si utilizas como parámetro "-10" lo que quieres guardar es 10.
122  Programación / Programación C/C++ / Re: El programa corre; pero en las 2 ultimas premisas no me da la respuesta correcta en: 29 Abril 2021, 21:12 pm
El problema que tienes es de planteamiento. El enunciado no dice que si estás 2 horas, las pagas a un precio y si estás 3 las pagas a otro. Sino que dice que las 2 primeras las pagas a un precio y las 3 siguientes a otro. (Y así sucesivamente)
Es decir, si estuvieras 7 horas pagarías las 2 primeras a 5.00$, las 3 siguientes (ya van 5) a 4.00$ y las 2 siguientes a 3.00$.

Una forma sencilla que se me ocurre es con un bucle:
Código
  1. const int HORAS_RANGO_1 = 2;
  2. const float PRECIO_HORA_RANGO_1 = 5.0f;
  3. const int HORAS_RANGO_2 = 3;
  4. const float PRECIO_HORA_RANGO_2 = 4.0f;
  5. const int HORAS_RANGO_3 = 5;
  6. const float PRECIO_HORA_RANGO_3 = 3.0f;
  7. const float PRECIO_HORA_RANGO_4 = 2.0f;
  8.  
  9. int main() {
  10.  int horas, autos;
  11.  float precioFinal = 0.0f;
  12.  
  13.  // Pides las horas y los autos
  14.  
  15.  int horasActuales = 0;
  16.  while(horasActuales <= horas && horasActuales <= HORAS_RANGO_1) { // Mientras estes en el rango 1
  17.    precioFinal += autos * PRECIO_HORA_RANGO_1;                     // Se suma cada hora al precio del rango 1
  18.    ++horasActuales;                                                // Y se incrementan las horas cobradas
  19.  }
  20.  
  21.  while(horasActuales <= horas && horasActuales <= HORAS_RANGO_2) {
  22.    precioFinal += autos * PRECIO_HORA_RANGO_2;
  23.    ++horasActuales;
  24.  }
  25.  
  26.  // Y asi sucesivamente
  27.  
  28.  cout << "El precio final es: " << precioFinal << endl;
  29. }

PD: En el último bucle tan solo tendrás que comprobar si (horasActuales <= horas) ya que no tienes límite. :rolleyes:
123  Programación / Programación C/C++ / Re: Representación Digital de la Informacion en C. en: 29 Abril 2021, 20:47 pm
La biblioteca de entrada/salida de C es <stdio.h>. Esta contiene las funciones printf() y scanf(), entre otras.
La biblioteca de entrada/salida de C++ es <iostream>. Esta contiene las "funciones" std::cout << y std::cin >>, entre otras.

Es un error muy típico mezclar C y C++. El problema está que si programas en C++ todo va a compilar porque C++ acepta todas las funciones de C; en cambio, a la inversa esto no funciona. C al ser anterior a C++ no acepta las funciones del último.
No sé muy bien a qué te refieres con "cargarlas en consola". Si quieres exponer un poco más a fondo el problema concreto y lo que tengas hecho, podremos ayudarte mejor.

Si estás buscando algún libro o recurso para aprender puedes usar la función del buscador del foro y buscar por ejemplo "libros" en el apartado de C/C++. Hay multitud de temas abiertos (algunos más antiguos que otros) sobre libros y otra documentación.
124  Programación / Programación General / Re: JAVA en instituto o Python por mi cuenta? en: 28 Abril 2021, 21:37 pm
A mi en lo personal no me gusta python, se que es facil para quienes no han visto mucha programación, pero no me gusta para nada su rendimiento
Menuda sorpresa  :o :o... AlbertoBSD, fiel defensor de C, renegando de Python.  :xD :xD
Yo opino igual, supongo que será cosa de los que nos gusta C.

Bromas aparte y yendo al tema principal, te hablaré desde mi propia experiencia habiendo aprendido programación de manera autodidacta, en universidad y en grado superior (más parecido a un curso digamos, más práctico).

Ventajas de aprender de forma autodidacta:
  • Vas a aprender lo que más te interese en cada momento. Eso ayuda a aprender lo que te motiva en ese momento y no lo que te imponen.
  • Podrás estudiar a tu ritmo y dedicar más tiempo a los temas que necesites y menos a los que no.
  • No te imponen una fuente de información. Podrás aprender de libros, vídeos, cursos, blogs...

Desventajas de aprender de forma autodidacta:
  • Es más complicado mantener la constancia. Tendrás temporadas que por tiempo o ganas lo dejarás apartado.
  • Tienes que contrastar la información que encuentres según qué fuentes. Internet es una herramienta inmensa pero de doble filo.

Ventajas de aprender mediante un sistema de formación (universidad, formación profesional...):
  • No te vas a quedar en blanco sin saber qué aprender en ese momento porque tienes un temario predefinido.
  • Aprenderás temas que aunque no te parezcan interesantes, te servirán en un futuro.
  • Obtención de un título/certificado que según casos y países puede ser importante para conseguir un trabajo relacionado.
  • Y como te podrás imaginar lo opuesto a las desventajas de aprender de forma autodidacta (aunque yo me he encontrado casos en los que se ve que los profesores no han aplicado eso de contrastar fuentes...)

Desventajas de aprender mediante un sistema de formación (universidad, formación profesional...):
  • Profesor malo -> Experiencia nefasta.
  • En la mayoría de casos tendrás unos apuntes elegidos por tu profesor y tendrás que hacer las cosas como a él le gustan para que te lo dé por bueno (aunque sepas que esa no es la mejor manera). Hay buenos casos en los que esto no se aplica, yo casi no los he visto... :silbar:
  • Un tema por interesante/profundo que sea, si tienes una semana para verlo y pasar al siguiente, tienes una semana y no hay más. A partir de ahí si quieres investigar más tendrá que ser por tu cuenta.

Dicho esto, mi recomendación: si puedes, estudia por ambos lados. Así estarás en un punto medio entre las cosas buenas y malas de cada uno. Y después de un tiempo, según cómo se vayan sucediendo las cosas, podrás decantarte por una cosa u otra.
El lenguaje es lo de menos porque siempre puedes pasar de uno a otro y no tendrás que empezar desde 0 pero mi recomendación es Java antes que Python. Python lo veo como aprender a conducir con un coche automático. Sabes conducir? Sí. Pero el día que te den un coche de cambio manual (Java o similares) no sabrás dónde comprar el tercer pie para el embrague. En cambio si aprender con el manual, el día que te den uno automático sólo tendrás que acostumbrarte a trabajar menos, no más.

Mucha suerte con tu elección.  :-X :-X
125  Programación / Programación C/C++ / Re: Problema con comparar cadenas en: 28 Abril 2021, 21:04 pm
Hola tengo una duda al final quiero comaprar las cadenas lenguaje con cadena pero me dice que no es igual no tengo idea por que es
El problema con las cadenas es el siguiente:
Código
  1. const int MAX_SIZE = 20;
  2.  
  3. int main() {
  4.  char *cadena1 = "hola"; // Se guarda "hola\0" -> '\0' es el caracter de fin de cadena siempre
  5.  char cadena2[MAX_SIZE];
  6.  // fgets() es la recomendacion sobre gets() para evitar problemas de desbordamiento
  7.  fgets(cadena2, MAX_SIZE, stdin); // Introduces: "hola" y pulsas Enter '\n' -> Se guarda: "hola\n\0"
  8.  if(strcmp(cadena1, cadena2) == 0) { // "hola\0" y "hola\n\0" no son iguales
  9.    ...
  10.  }
  11. }

Una solución que me gusta usar porque además de eliminar el Enter del final también deja el buffer limpio es:
Código
  1. fgets(cadena2, MAX_SIZE, stdin);
  2. if(cadena2[strlen(cadena2) - 1] == '\n') // Si el ultimo caracter de la cadena es Enter -> No queda nada en el buffer...
  3.  cadena2[strlen(cadena2) - 1] = '\0'; // ...y elimino el Enter sustituyendolo por el caracter de fin de cadena
  4. else // Si el ultimo caracter de la cadena no es Enter -> No cabia en el array y se ha quedado en el buffer (solo o con otros caracteres antes)
  5.  while(getchar() != '\n'); // Consumo todos los caracteres del buffer hasta consumir el Enter que va a ser el ultimo -> Buffer limpio
Así consigues que la cadena siempre quede sin el Enter al final y el buffer siempre quede limpio.

Otra posible solución es comparar hasta el final de la cadena que no tiene el Enter, así no lo tendrás en cuenta:
Código
  1. if(strncmp(cadena1, cadena2, strlen(cadena1)) == 0) {
  2.  ...
  3. }
Inconvenientes:
  • Tienes que controlar manualmente cuál será la cadena que no tenga el Enter.
  • Cuando utilices la cadena2 para otra cosa, seguirá teniendo el Enter y tendrás que acordarte de manejarlo correctamente.

Además la opción del:
Código
  1. while(getchar() != '\n');
también sirve como método después de un scanf() para dejar el buffer limpio. Esto sería una alternativa a la respuesta de MAFUS para que la siguiente entrada funcione correctamente.
Además si pides un número "%d" y el usuario introduce letras, el bucle se encargará de dejar limpio el buffer eliminando todas las letras que no se hayan podido procesar en la entrada.
126  Programación / Programación C/C++ / Re: maximo y minimo en: 27 Abril 2021, 19:59 pm
El tema tiene 8 años y los usuarios que participaron en él llevan años sin entrar al foro...
Si tienes un problema crea un tema nuevo agregando una explicación del problema y/o el código para poder ayudarte.

Saludos. :-X
127  Programación / .NET (C#, VB.NET, ASP) / Re: Ejercicio básico de combinaciones en: 25 Abril 2021, 12:28 pm
Yo diría que algo así te puede servir:
Código
  1. int numeroMaximo = 49;
  2. int[] digitos = { 1, 4, 5, 7, 8, 9 };
  3. List<int> numerosGenerados = new List<int>();
  4.  
  5. int decenaMaxima = numeroMaximo / 10;
  6. int unidadMaxima = numeroMaximo % 10;
  7.  
  8. for(int i = 0; i < digitos.Length && digitos[i] <= decenaMaxima; ++i)
  9.  for(int j = 0; j < digitos.Length && (digitos[i] < decenaMaxima || digitos[j] <= unidadMaxima); ++j)
  10.    numerosGenerados.Add(digitos[i] * 10 + digitos[j]);
** Para que el algoritmo anterior funcione correctamente el array de dígitos debe estar ordenado.
Las condiciones de los bucles for() no son muy complicadas pero cualquier duda no dudes en comentarla.
128  Programación / Programación C/C++ / Re: necesito ayuda en este ejercicio principalmente después de la letra d) C++ en: 23 Abril 2021, 21:14 pm
Esta es una práctica típica de lenguajes totalmente orientados a objetos como Java o C#. En estos lenguajes todo el código tiene que estar dentro de una clase, entonces se suele pedir crear una clase principal (que contendrá el método main()) para probar el funcionamiento del resto de clases.

En C++ también es posible hacerlo aunque no es tan típico ya que no es realmente necesario crear una clase principal. La función main() puede encontrarse fuera de toda clase.
Al final lo que te están pidiendo es una clase que tenga una lista de automóviles y que puedas instanciarla en el main() para trabajar con ello. Algo como esto:
Código
  1. class UsoAutomovil {
  2.  private:
  3.    std::vector<Automovil> automoviles;
  4.  
  5.  public:
  6.    guardarNuevoAutomovil();
  7.    ...
  8. }

Y ahora en tu función main() tendrías que tener algo como esto:
Código
  1. int main() {
  2.  UsoAutomovil concesionario;
  3.  // La funcion guardarNuevoAutomovil() tiene que pedir al usuario todos los valores necesarios para crear un automovil nuevo
  4.  // y agregarlo a la lista (vector) de automoviles que tiene dentro de la clase
  5.  concesionario.guardarNuevoAutomovil();
  6.  ...
  7. }

Así mismo tienes que crear el resto de funciones que te piden.
Para la última parte tan solo tienes que mirar cómo funciona la herencia en C++. Para este ejemplo no tienes ninguna complicación, puedes crear por ejemplo una clase Coche que herede de Automovil y así esta primera tendrá de manera implícita todos los atributos de la segunda.
129  Comunicaciones / Redes / Re: Configurar router como punto de acceso en: 21 Abril 2021, 23:21 pm
En efecto, el router es un TP-Link, si no recuerdo mal un Archer C1200.
Lo que quiero conseguir es que este router amplifique la red WiFi del router principal.

El problema es que tras intentar configurarlo, puedo conectarme con un cable Ethernet a este router y tener conexión a Internet sin ningún problema pero no puedo hacer lo mismo si me conecto por WiFi (me conecto pero me aparece un mensaje en Windows de "Sin conexión a Internet").
130  Comunicaciones / Redes / Configurar router como punto de acceso en: 21 Abril 2021, 21:44 pm
Hola a tod@s, estoy teniendo un problema al configurar un router como punto de acceso.
Tengo algunos conocimientos teóricos de redes y en alguna ocasión he accedido al router de mi casa para modificar algún ajuste pero nada más lejos de la realidad. El problema viene cuando me piden que configure un router de una red más extensa.

Situación actual: el router en cuestión está funcionando con conectividad WiFi y Ethernet (aunque la Ethernet no se utiliza). Al mismo tiempo está conectado a un switch que está conectado digamos al router principal.
Objetivo: configurar el router en cuestión como punto de acceso para ampliar la señal WiFi del router principal.

Cuando intenté configurarlo, entrando en la configuración del router y cambiando el modo de operación a punto de acceso, conseguí dejarlo funcionando pero únicamente mediante cable Ethernet, sin WiFi.
Me comentaron que puede ser por tener el router conectado a un switch y no directamente al router principal. Entonces quería saber si esto es así o el problema pueda ser otro o si hubiese alguna solución.

Muchas gracias de antemano.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ... 102
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines