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 ... 86
91  Sistemas Operativos / GNU/Linux / Re: ¿Cómo puedo instalar Kali en un segundo HDD desde windows? en: 22 Octubre 2020, 12:49 pm
Desconozco si existe algún método alternativo de instalación que no requiera de una unidad externa pero lo que sí sé es que Kali Linux es para fines muy concretos y no se suele recomendar instalarlo en el ordenador.

Lo habitual es utilizarlo como Live desde una unidad externa. Sin embargo, si te sirve puedes utilizar una máquina virtual (VirtualBox por ejemplo) y crear ahí tu sistema Kali.
92  Programación / Programación C/C++ / Re: Amigos como podría pasar el siguiente código a funciones? ya me confundí un poco en: 21 Octubre 2020, 18:33 pm
Al final las funciones las puedes hacer como tú quieras pero siempre hay mejores y peores diseños.
La gracia de una función es encapsular un fragmento de código autónomo que puede ser reutilizado.

Una forma de hacerlo es crear un main() que sea fácil de leer. Que con un simple vistazo sepas lo que hace pero sin entrar en detalles. En tu caso podría ser algo como lo siguiente (de forma esquemática):
Código:
declarar matriz
pedir tamaño
inicializar matriz
mostrar matriz
comprobar si es matriz identidad

Ahora hay que analizar cada paso:
  • declarar matriz -> Es una instrucción atómica (muy sencilla). No ganas nada metiendo la declaración de la matriz en una función. En cambio, si usases memoria dinámica igual sí te conviene hacerlo pues es más complejo.
  • pedir tamaño -> En tu caso también lo haces de una forma muy sencilla pero y si compruebas que el valor que te introducen está entre 1 y el límite máximo? En ese caso ya podrías encapsular ese fragmento en una función. Para que sea lo más reutilizable posible podrías pasar como parámetros los límites y que te devuelva el valor cuando sea correcto:
Código
  1. int solicitarNumero(int minimo, int maximo){
  2.  int numero;
  3.  do {
  4.    printf("Introduce un numero en el rango [%d, %d]: ", minimo, maximo);
  5.    scanf("%d", &numero);
  6.  } while(numero < minimo || numero > maximo);
  7.  return numero;
  8. }
Ahí lo tienes una función que vas a poder reutilizar en infinidad de programas. Claro está que luego podrás añadirle más cosas como que no falle si meten caracteres que no sean numéricos, etc.

  • inicializar matriz -> Esta tarea requiere de varias líneas y es posible que en un mismo programa necesites inicializar una matriz en más de una ocasión por lo que podrías encapsularlo en una función para llamarla varias veces:
Código
  1. void inicializarMatriz(int matriz[][SIZE], int filas, int columnas);
PD: Cuando se pasan arrays como argumentos, es obligatorio especificar todas sus dimensiones menos la primera. <filas> y <columnas> representan el tamaño útil real que será el introducido por el usuario. En tu caso se puede usar un único parámetro <orden> ya que son matrices cuadradas pero haciéndolo así harás una función que te servirá para cualquier tipo de matriz.

  • mostrar matriz -> Esta es otra tarea que además de emplear varias líneas puede ser utilizada muchas veces en un mismo programa. Por lo tanto ya sabes, otra función:
Código
  1. void mostrarMatriz(int matriz[][SIZE], int filas, int columnas);

  • comprobar si es matriz identidad -> Esto es otra tarea independiente por lo que puedes hacer otra función. Hay personas que prefieren comprobar y mostrar el resultado en la misma función aunque esto no es aconsejable.
Podríamos decir que hay dos tipos de funciones: las que interactúan con el usuario y las que hacen cálculos internos sin necesidad de interactúar con el usuario. En las primeras es lógico que tendremos que mostrar mensajes pero en las segundas es mejor no hacerlo.
Aquí lo mejor es un valor de retorno <bool> o <int> que sea 1/true si es identidad y 0/false si no lo es. En los parámetros hay más posibilidades.
1.
Código
  1. int esMatrizIdentidad(int matriz[][SIZE], int filas, int columnas); // vale para todas las matrices y lo primero sera comprobar que filas == columnas
2.
Código
  1. int esMatrizIdentidad(int matriz[][SIZE], int orden); // solo valdra para matrices cuadradas



Con todos estos cambios y 2 cambios más:
  • Utilizar constantes para almacenar los números que haya perdidos por el código. Hacen el código más fácil de modificar.
  • Sustituir system("pause"); por getchar();. Hará la misma función con un menor gasto de recursos.
te quedaría un código tal que:
Código
  1. #include <stdio.h>
  2.  
  3. // 2 alternativas para crear constantes
  4. #define SIZE 50
  5. const int SIZE = 50;
  6.  
  7. int main(){
  8.  int matriz[SIZE][SIZE];
  9.  int orden = solicitarNumero(1, SIZE);
  10.  
  11.  inicializarMatriz(matriz, orden, orden);
  12.  
  13.  printf("La matriz resultante es:\n");
  14.  mostrarMatriz(matriz, orden, orden);
  15.  
  16.  if(esMatrizIdentidad(matriz, orden, orden))
  17.    printf("La matriz es Identidad\n");
  18.  else
  19.    printf("La matriz no es Identidad\n");
  20.  
  21.  getchar();
  22.  return 0;
  23. }

PD2: Te queda como trabajo a ti implementar el cuerpo de cada una de las funciones para que ese código funcione.
93  Programación / Programación C/C++ / Re: Duda con Calculo errado en: 21 Octubre 2020, 02:09 am
No, por defecto toma la precedencia de operadores correctamente.
Supongo que en este caso estaba implementando un algoritmo propio que replicase ese comportamiento.
94  Programación / Programación C/C++ / Re: Duda con Calculo errado en: 20 Octubre 2020, 23:12 pm
Efectivamente, siguiendo el orden de preferencia de los operadores, el resultado debería ser -144 y no -1008.

Parece que tu programa hace las operaciones según las ve pues si haces: (-18 * 6 + (-4)) * 9 = -1008.

Obviamente, sin ver el código es imposible ayudarte más.
95  Programación / Programación C/C++ / Re: Duda con arreglo en: 20 Octubre 2020, 17:33 pm
Tengo una duda con un arreglo de una subcadena de un alfabeto
Si por ejemplo tengo :
Código
  1. char [i] = “a” ;
  2. int n;
  3.  
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:
Código:

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.
Código
  1. define N 3
  2. int main(){
  3.  char caracter = 'a';
  4.  char caracteres[N];
  5.  for(int i = 0; i < N; ++i){
  6.    caracteres[i] = caracter;
  7.  }
  8. }

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.
96  Programación / Programación C/C++ / Re: estoy estancado en: 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.
97  Programación / Java / Re: Problemas con directorio en: 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.
98  Programación / Programación C/C++ / Re: ayuda con este ejercicio [VECTOR] en: 16 Octubre 2020, 00:10 am
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
  1. int buscarMaximo(int numeros[], int size); // Busca y devuelve el maximo valor del array de longitud size
Código
  1. 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.
99  Programación / Java / Re: Obtener nombre y código - Java/Netbenas en: 14 Octubre 2020, 01:35 am
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:
Código:
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.
100  Programación / Programación C/C++ / Re: matriz en C nose como encarar el ejercicio se agradece la ayuda en: 13 Octubre 2020, 18:08 pm
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
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 ... 86
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines