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

#191
Programación C/C++ / Re: Duda con arreglo
20 Octubre 2020, 17:33 PM
Cita de: Jay en 20 Octubre 2020, 09:34 AM
Tengo una duda con un arreglo de una subcadena de un alfabeto
Si por ejemplo tengo :

char [i] = "a" ;
int n;

Como hago para elevar por ejemplo n potencia es decir que me aparezcan
aaa si n = 3

Varias cosas:
  • Las comillas dobles se utilizan para strings (cadenas), no para caracteres. Los caracteres se definen entre comillas simples.
  • Y lo que quieres no es utilizar potencias sino "multiplicar" por así decirlo. Es decir lo que en otros lenguajes se puede hacer como:

    n = 3
    print("a" * n)


    Como te ha comentado @XSStringManolo, tienes que usar bucles. Pero tienes que fijarte en dónde lo vas a guardar ya que si tienes un array de char, cada posición solo puede almacenar un caracter.

    define N 3
    int main(){
      char caracter = 'a';
      char caracteres[N];
      for(int i = 0; i < N; ++i){
        caracteres[i] = caracter;
      }
    }


    Si quieres variar ese número entonces tendrías que usar arrays con un tamaño fijo superior (y tendrás su correspondiente desaprovechamiento de memoria) que se suele usar cuando se empieza o utilizar memoria dinámica.

    También depende si lo que quieres es guardar el contenido o mostrarlo o hacer algo con ello. Según el propósito final es más recomendable diseñarlo de una manera o de otra.
#192
Programación C/C++ / Re: estoy estancado
17 Octubre 2020, 22:53 PM
Te dejo aquí un enlace a un tema muy similar al tuyo para que le eches un vistazo:
https://foro.elhacker.net/programacion_cc/que_debo_seguir_aprendiendo-t489688.0.html;msg2178373#msg2178373

Aparte de lo que pone ahí siempre puedes ir leyendo libros o buscando información cada vez más avanzada y así seguramente vayas encontrando temas nuevos que no habías tocado antes.

Otra opción es pensar primero en tu propósito y así puedes especializarte más en una u otra dirección.
#193
Java / Re: Problemas con directorio
16 Octubre 2020, 00:52 AM
Coloca tu código entre etiquetas de Código GeSHi, abriendo el desplegable que hay encima del cuadro de texto llamado Código GeSHi y seleccionando Java como el lenguaje para las etiquetas.

Un directorio es una estructura lógica para organizar ficheros por lo tanto un directorio no tiene tamaño (suele aparecer 4096 pero esto si mal no recuerdo se debe al inodo correspondiente a ese directorio).

Si quieres calcular el tamaño de un directorio tendrás que sumar el tamaño de todos sus ficheros y si encuentras directorios dentro tendrás que hacer lo mismo dentro de ese directorio.
#194
No parece que estés pidiendo ayuda pues no detallas ninguna duda o problema en concreto.

No se hacen tareas.
Si quieres obtener más ayuda tendrás que empezar a hacer el programa y cuando tengas un problema concreto, comentarlo en el foro (incluyendo el código que hayas hecho) para que alguien pueda ayudarte.

No sé si al especificar Vector te refieres a que estás programando en C++ con la clase vector de la STL o estás utilizando simples arrays ya sea en C o en C++.
Al final tienes que hacer dos funciones tal que:
Código (cpp) [Seleccionar]
int buscarMaximo(int numeros[], int size); // Busca y devuelve el maximo valor del array de longitud size
Código (cpp) [Seleccionar]
int buscarElemento(int numeros[], int size, int elemento); // Devuelve el numero de coincidencias de un elemento en un array de longitud size

Cuando tengas ambas funciones implementadas, bastará con que llames a la segunda función pasando como tercer argumento el valor devuelto antes por la primera función.
#195
Este código está bastante revuelto. Algunas de las cosas que veo a primera vista son:
  • Instancias de objetos que no se utilizan nunca. Creas objetos usando el constructor sin parámetros para luego llamar a otro constructor con parámetros.
  • Cada vez que llamas a ciertos métodos creas nuevas instancias de algunas clases cuando parece que esas instancias ya tendrían que existir.
  • Llamas a métodos de una clase pasando como parámetro el mismo objeto que llama al método. Esto es innecesario.

    Deberías reorganizar tu código antes de seguir pues cada vez será más complicado corregirlo.

    Pero yendo al grano, tienes que tener un sitio donde guardes todas las ventas. Pues lo que tienes que hacer es:

    PARA CADA empleado DE empleadosTotales HACER
      cantidadVendida := 0
      PARA CADA venta DE ventasTotales HACER
        SI venta.codigoEmpleado == empleado.codigo ENTONCES
          cantidadVendida += venta.cantidad
        FIN SI
      FIN PARA
      SI cantidadVendida == cantidadBuscada ENTONCES
        // Aqui haces lo que quieras con ese empleado
      FIN SI
    FIN PARA


    El código se puede optimizar haciendo que deje de acumular si ya nos hemos pasado de la cantidad a buscar y cosas similares pero esta es la versión más simple y más fácil de entender.
    Lo anterior es pseudocódigo, es decir, los pasos que tienes que seguir para lo que quieres hacer. Ahora tienes que implementar esa idea en lenguaje Java.
#196
Cita de: DAOST420 en 13 Octubre 2020, 03:46 AM
Se debe buscar el primer valor pasado dentro de la matriz en nuestro
ejemplo (elem) por fila y reemplazar por el otro valor pasado (elem2) como parámetro
Cuidado ya que tienes que cambiar el primer valor y la respuesta que te ha dado @UsuarioZ te cambiaría todos los valores que coincidan con ese. Tendrás que modificarlo un poco y eso te toca hacerlo a ti... :rolleyes:

Suerte.  :-X
#197
Las operaciones que realizas no tienen mucho sentido.

El punto que esté al norte y el que esté al sur, tendrán la misma coordenada X (llamémosla A).
El punto que esté al oeste y el que esté al este, tendrán la misma coordenada Y (llamémosla B).
El punto solución es: (A, B)
#198
Esto es porque estás llamando 2 veces a la función chdir(). Primero la llamas dentro de la condición del if() y después dentro del cuerpo.

int cddir(char *tr){
  return chdir(tr);
}

int main(){
  //...
  char tr[] = "..";
  if(!cddir(tr)) printf("Error!! No existe el directorio %s", tr);
  //...
}
#199
En el caso de utilizar la función:
int trocear(char cadena[], char trozos[][SIZE]);
tendrías que crear un puntero a char para usarlo en la función strtok y después copiar su contenido mediante strncpy().
Además lo suyo sería pasar como tercer parámetro el número de filas de <trozos> para evitar problemas de acceso en la función.

int trocear(char cadena[], char trozos[][SIZE], int filas){
  int num_trozos = 0;
  char *p = strtok(cadena, " \n\t");
  while(p && num_trozos < filas){
    strncpy(p, trozos[num_trozos], SIZE);
    trozos[num_trozos++][SIZE-1] = '\0'; // para asegurar que cada trozo acaba con \0
    p = strtok(NULL, " \n\t");
  }
  return num_trozos;
}
#200
Tienes varias opciones para hacer lo que quieres.

Si dejas la función trocear() tal y como la tienes, tienes que utilizar memoria dinámica:

#define SIZE 50
int main(){
    char *cadena = "Esta es una cadena de prueba";
    // Array bidimensional [SIZE][SIZE] con memoria dinamica:
    char **palabras = (char**)malloc(SIZE * sizeof(char*));
    for(size_t i = 0; i < SIZE; ++i){
        palabras[i] = (char*)malloc(SIZE * sizeof(char));
    }
    int numero_palabras = trocear(cadena, palabras);
    for(size_t i = 0; i < numero_palabras; ++i){
        printf("Palabra %i: %s\n", i+1, palabras[i]);
    }
    // Al terminar tienes que liberar la memoria reservada dinamicamente
    for(size_t i = 0; i < SIZE; ++i){
        free(palabras[i]);
    }
    free(palabras);
}


Si quieres usar un array de manera estática tienes que definir la función trocear() como:
int trocear(char *cadena, char palabras[][SIZE]);
(Es optativo especificar el tamaño de la primera dimensión de un array pero para el resto de dimensiones es obligatorio)