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 - K-YreX

#61
Yo diría que algo así te puede servir:
Código (csharp) [Seleccionar]

int numeroMaximo = 49;
int[] digitos = { 1, 4, 5, 7, 8, 9 };
List<int> numerosGenerados = new List<int>();

int decenaMaxima = numeroMaximo / 10;
int unidadMaxima = numeroMaximo % 10;

for(int i = 0; i < digitos.Length && digitos[i] <= decenaMaxima; ++i)
  for(int j = 0; j < digitos.Length && (digitos[i] < decenaMaxima || digitos[j] <= unidadMaxima); ++j)
    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.
#62
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 (cpp) [Seleccionar]

class UsoAutomovil {
  private:
    std::vector<Automovil> automoviles;

  public:
    guardarNuevoAutomovil();
    ...
}


Y ahora en tu función main() tendrías que tener algo como esto:
Código (cpp) [Seleccionar]

int main() {
  UsoAutomovil concesionario;
  // La funcion guardarNuevoAutomovil() tiene que pedir al usuario todos los valores necesarios para crear un automovil nuevo
  // y agregarlo a la lista (vector) de automoviles que tiene dentro de la clase
  concesionario.guardarNuevoAutomovil();
  ...
}


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.
#63
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").
#64
Redes / Configurar router como punto de acceso
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.
#65
Diría que el error está en el separador decimal que estás utilizando.
Si estás usando un punto (.) como separador decimal y deberías utilizar una coma (,), cualquiera de estas dos opciones te servirán:
Código (vbnet) [Seleccionar]

Customer.EXISTENCIA = Convert.ToSingle(dt.Rows(i)("EXISTENCIA").ToString(), CultureInfo.InvariantCulture)
Customer.EXISTENCIA = Convert.ToSingle(dt.Rows(i)("EXISTENCIA").ToString().Replace(".", ","))

Si el problema es a la inversa y estás utilizando la coma (,) como separador decimal cuando deberías utilizar el punto (.), debes hacer el reemplazo al contrario.
#66
El link que has incluido requiere de un login por lo que no podemos ver nada.
Y a tu pregunta, no, no hay "trucos". Tienes que aprender a pensar como lo haría un ordenador para resolver esos problemas. Por lo que comentas son ejercicios muy típicos pero si pones algo más concreto como lo que necesitas y lo que llevas hecho, podremos ayudarte.
Si vas a poner únicamente el enunciado para que te lo demos hecho, no hace falta que te esfuerces, la respuesta por parte de la comunidad será que no se hacen tareas.
#67
No consigo acceder al enlace para darte una respuesta más concreta así que te daré una respuesta más genérica.

De las 4 herramientas mencionadas (GitHub, Python, C++, VS) tendrás que aprender la parte que tú realmente vas a utilizar. Por ejemplo, GitHub imagino que es donde se encuentra el repositorio del código fuente y de donde tendrás que descargarlo pero... ¿luego vas a seguir utilizando GitHub para crear y mantener tus propios repositorios? De ser así tendrás que aprender a manejarlo aunque sea de forma básica pero si tú no lo vas a utilizar no necesitas nada más que obtener de ahí el código fuente.

Bajo el mismo razonamiento se puede pensar en el resto de herramientas:
  • VS es un IDE (Entorno de Desarrollo Integrado), es decir, una herramienta con un editor de texto para modificar el código fuente, un compilador para poder compilar y ejecutar el código directamente, etc. ¿Vas a utilizar este IDE para programar? Si la respuesta es que sí, tendrás que aprender a manejarlo pero si vas a utilizar otro, entonces no. Además, en cualquier caso, el IDE no es algo que tengas que estudiar. Irás aprendiendo cómo funciona sobre la marcha, buscando en Internet cada vez que no encuentres algo.
  • C++ y Python supongo que serán los lenguajes en los que está desarrollado la herramienta. En el caso de que tengas que entender/modificar código fuente pues no te quedará otra opción que aprender estos lenguajes.
    Si por el contrario, tu objetivo es instalar y utilizar este software, entonces no necesitas aprender ninguna de estas cosas. Únicamente tendrás que aprender a descargar el código del repositorio e instalarlo en tu equipo (lo cual seguramente vendrá explicado en el propio repositorio).
#68
El problema supongo que viene de lo siguiente. Tú estás haciendo esto con el segundo parámetro:
x = DateTime.Now -> Devuélveme la fecha/hora actual
y = x.ToShortDateString() -> Conviértelo a cadena de texto en formato fecha
DateTime.Parse(y) -> Convierte esa cadena con la fecha a formato fecha/hora

Es decir que en el último paso, al volver a convertirlo a tipo DateTime estás volviendo a tener la hora (pero no la que tenías porque la has desechado en el paso 2, sino la hora por defecto).

Si lo tienes todo enlazado y no puedes modificar los datos antes de mostrarlos, ahora mismo no se me ocurre cómo hacerlo. En cambio, si puedes tratar los datos antes de mostrarlos, deberías recuperar la fecha/hora de la BD y mostrarla en el datagridview convertida a cadena de texto con la fecha. Es decir guardas la fecha/hora actual (paso 1) y el paso 2 lo realizas al momento de mostrar, no de guardar.
#69
Normal que en el segundo código no funcione si estás intentando comparar el contenido de <datos> a "True" (línea 74) cuando no estás guardando "True". Y tú me dirás que sí, que en la línea 71 llamas a la función y guarda "True" en <datos> pero entonces yo te diré "y qué pasa con el espacio que estás añadiendo al final?? (línea 62)"

Por otra parte decir que ese código tiene demasiado acoplamiento. Utilizas todo el tiempo la misma variable <datos> para guardar cada uno de los resultados. Es mejor que la función devuelva un string con el resultado y ya tú lo asignarás a la variable que quieras en cada momento.

Una mejor opción sería algo como esto:
Código (csharp) [Seleccionar]

private static readonly char SEPARADOR = "|"; // Separador de elementos. Por si en algun momento necesitas cambiarlo por otro

private string ConsigueComponentes(string hwclass, string syntax) {
    string resultado = string.Empty;
    ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + hwclass);
    foreach (ManagementObject mj in mos.Get()) {
        if (!string.IsNullOrEmpty(mj[syntax].ToString()))
            resultado += mj[syntax].ToString() + SEPARADOR;
    }
    // El ultimo separador nunca lo vas a necesitar para nada -> Lo puedes eliminar directamente y quitarte futuros problemas
    resultado = resultado.Remove(resultado.Length - 1);
    return resultado;
}

// Mejor tener un metodo que te diga si hay o no hay disco con true/false y luego ya lo usaras donde lo necesites
private bool HayDisco() {
    string resultado = ConsigueComponentes(...);
    return (resultado == "True");
}

private void Form_Load(object sender, EventArgs e) {
    ...
    string[] unidades = ConsigueComponentes(...).Split(SEPARADOR);
    comboBox.Items.AddRange(unidades);
    ...
}
#70
Exactamente, como dice [D]aniel se soluciona.
Como estás añadiendo un espacio después de cada unidad, te queda una cadena como esta (sustituyo cada espacio por un _):

datos = "G:_F:_"
Primer Split -> "G:" (parte izquierda) + "F:_" (parte derecha)
Segundo Split -> "G:" + "F:" (parte izquierda) + "" (parte derecha)

Por eso al final queda un último elemento que es una cadena vacía. Porque es lo que queda a la derecha del último espacio.

Otra solución válida es:
Código (csharp) [Seleccionar]

datos = ... // datos = "G:_F:_"
datos = datos.Trim(); // Elimina espacios iniciales y finales -> datos = "G:_F:"
string[] unidades = datos.Split(' ');