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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: 1 ... 11 12 13 14 15 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 ... 102
251  Programación / Programación C/C++ / Re: Ayuda en programa en: 27 Octubre 2020, 02:36 am
El foro es para lo que es.

Tú dirás por qué no puedes poner el código. Tienes las etiquetas de código para insertarlo. Que es muy grande? Puedes poner un enlace a github y subir ahí el código, puedes simplificar el ejercicio y poner un ejemplo que simule tu situación real...

252  Programación / Java / Re: Problema con archivos en: 23 Octubre 2020, 01:59 am
No puedes comparar instancias de la clase String (ni de ninguna clase) usando el operador ==. El operador == compara que las direcciones de memoria sean las mismas, es decir, que sea la misma instancias.

Para comparar el contenido y no la referencia tienes que utilizar el método equals().


Empieza a utilizar etiquetas de Código GeSHi para adjuntar tu código.
Para colocarlas tienes que seleccionar tu código y con él seleccionado, abrir el desplegable llamado Código GeSHi y elegir Java.
Código
  1. public class MyClass {
  2.  //...
  3. }
253  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.
254  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.
255  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.
256  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.
257  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.
258  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.
259  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.
260  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.
Páginas: 1 ... 11 12 13 14 15 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 ... 102
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines