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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  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 ... 102
91  Programación / Programación C/C++ / Re: Como leer una cadena de caracteres vacia en: 23 Octubre 2021, 00:41 am
La respuesta a este problema es sencilla: tener una variable que almacene siempre el número de elementos insertados.
Cuando se tiene una colección de datos (array o similares) hay dos conceptos parecidos pero diferentes: size y capacity.
  • size -> Indica el número de elementos que contiene la colección
  • capacity -> Indica el máximo número de elementos que puede contener la colección

Es un problema común cuando se recorre una colección, utilizar la condición (i < capacity) en vez de (i < size). En tu caso concreto parece que la variable j corresponde a capacity y la variable p corresponde a size (excepto cuando haces p=0 al mostrar). Corrige eso un poco y lo tendrás (usa siempre que puedas nombres descriptivos, esto no es necesario para los contadores de un for: i, j, k...; pero sí siempre que esas variables las uses para más cosas)

PD: No le encuentro sentido a la función memset() que utilizas.

Por otro lado te dejo algunos consejos extra:
  • Las cadenas de caracteres se recomienda leerlas con fgets() en vez de scanf(). En este foro hay muchos temas al respecto, puedes utilizar el botón de "Buscar" para encontrarlos.
  • Utiliza constantes para los valores predefinidos y evita siempre que sea posible escribir números directamente en el código. Así será más fácil entender por qué hay un 10 por ahí y no es un 15 por ejemplo.
Código
  1. const int MAX_ELEMENTOS = 10;
  2. const int MAX_LONGITUD_ELEMENTO = 100;
  3.  
  4. int main() {
  5.    ...
  6. }
Así si en un momento dado quieres cambiar alguno de esos valores, sólo tendrás que cambiarlo en un sitio y no en todas las líneas donde lo usas.

Se puede mejorar alguna cosa más pero con esos dos puntos creo que ya se notará una mejora considerable.
Suerte  :-X
92  Programación / Programación C/C++ / Re: DOS BUCLES FOR ANIDADOS : DUDA en: 27 Septiembre 2021, 13:43 pm
Básicamente el for interno escribe de izquierda a derecha porque es el flujo normal del texto cuando escribes y el for externo escribe de arriba hacia abajo porque en la línea 29 lo que estás haciendo es escribir un salto de línea (como si pulsaras Enter).
93  Programación / Java / Re: Ayuda con Queue de array en: 6 Septiembre 2021, 23:17 pm
Estoy dispuesto a ayudarte sólo por las referencias a HP pero... tienes que poner algo más de código, no voy a dártelo hecho...
No se hacen tareas. Agrega el código que tengas hecho aunque esté mal para poder ayudarte.

PD: Utiliza etiquetas de código GeSHi para el código tal que así:

[code=java]
Aquí pones tu código
[/code]

El resultado tiene que quedar tal que así:
Código
  1. System.out.println("Codigo entre etiquetas de codigo GeSHi");
94  Programación / Programación General / Re: buen lenguage para programa en: 6 Septiembre 2021, 23:06 pm
Todo depende de hacia dónde quieras enfocarte. Hay lenguajes específicos para ciertas cosas.
Pero si no tienes nada en mente y quieres aprender algún lenguaje de propósito general, yo personalmente te recomiendo C# o Java en su defecto.
Puedes encontrar manuales, cursos, vídeos e infinidad de recursos didácticos en cualquier web (y la inmensa mayoría gratis). No necesitas gastar absolutamente nada de dinero.
95  Programación / Programación C/C++ / Re: Devolver string con int en: 4 Septiembre 2021, 14:04 pm
Tienes que compilar para C++11 para que funcione. Ahí tienes la respuesta de Stackoverflow: https://stackoverflow.com/a/15569244
No sé cómo estés compilando el programa pero digamos que si la línea de compilación ahora era:
Código:
g++ tu_programa.cpp -o tu_programa
Debes modificarla para que sea:
Código:
g++ -std=c++0x tu_programa.cpp -o tu_programa
También puedes utilizar "-std=c++11" en vez de "-std=c++0x", dependiendo del compilador.

Si estás utilizando algún IDE tendrás que buscar cómo se hace esto en ese IDE en particular. Seguro que en Internet encuentras el modo rápidamente.
96  Programación / Programación C/C++ / Re: Devolver string con int en: 4 Septiembre 2021, 13:36 pm
No sé si sea esto lo que estabas buscando:
Código
  1. string retornarString(int x) {
  2.  return "El numero es: " + to_string(x);
  3. }
  4.  
  5. int main() {
  6.  cout << retornarString(2) << endl;
  7. }

El operador << no se utiliza para concatenar (es un caso especial y más complejo de <cout>). El operador general para concatenar es +.
97  Programación / Programación C/C++ / Re: programa en c que cambia todas las vocales por una "e" en: 4 Septiembre 2021, 13:28 pm
Bueno, seguramente está empezando y coincidirás conmigo que esa es la forma de hacer de la mayoría de los tutoriales de internet.
Desde luego, pero la forma de publicar el código fue como "no sufráis más, ya he resuelto uno de los problemas del milenio y aquí lo tenéis".
Si hubiera publicado el mismo código pero con una frase como: "¿Cómo puedo mejorar este programa?", seguramente mi respuesta no habría sido tan tajante. Aunque no por tajante ha dejado de ser instructiva, ya que le enumeré algunas mejoras que podía implementar y alguna breve explicación del porqué.  :rolleyes: :rolleyes:
98  Programación / Programación C/C++ / Re: programa en c que cambia todas las vocales por una "e" en: 3 Septiembre 2021, 22:15 pm
Ese programa es mejorable por todas partes...
  • Utiliza una constante para la longitud máxima del array o utiliza un array dinámico.
  • El programa dice que cambia las vocales de un texto por la siguiente vocal. De ahí yo entiendo que cambia 'a' -> 'e' | 'e' -> 'i' | 'i' -> 'o' | 'o' -> 'u' | 'u' -> 'a'.
  • No se debe utilizar scanf() para almacenar cadenas de texto. Si introduzco "Hola Mundo", la salida es "Hele"... ¿Qué ha pasado con "Mundo"?
  • Demasiado código para el if-else-if. Eso se puede hacer mucho más compacto y limpio.
  • No es recomendable usar <system("pause")>. Utiliza en su lugar <getchar()>. Obtendrás el mismo resultado, más eficiente y sin necesitar la librería <stdlib.h>.
  • La librería <string.h> tampoco está siendo utilizada.
99  Programación / Programación C/C++ / Re: Gestión clubes en: 2 Septiembre 2021, 12:22 pm
Ese código estuvo por aquí de visita hace unos días pero ya se fue.
Dijo algo de que nadie le requería y que se iba a otros foros a buscar interesados.

No se hacen tareas.
100  Programación / Programación C/C++ / Re: Comparacion de vectores en: 1 Septiembre 2021, 03:12 am
Antes de resolver tus dudas te diré algunos consejos para mejor el código:
  • main() es una función y como tal debe tener un tipo de retorno. La forma correcta de definir la función main() es:
Código
  1. // Version simplificada (cuando se utilizan argumentos de ejecucion)
  2. int main() {
  3.  //...
  4.  return 0; // Si no se especifica, se incluye implicitamente
  5. }
  6.  
  7. // Version completa (cuando se utilizan argumentos de ejecucion)
  8. int main(int argc, char *argv[]) {
  9.  //...
  10.  return 0; // Si no se especifica, se incluye implicitamente
  11. }

  • Utiliza constantes en vez de "números mágicos" (números literales que aparecen en el código sin explicación: 20). Así si de repente necesitas cambiar ese valor por otro, tan solo tendrás que cambiarlo en la definición y el resto del programa seguirá funcionando correctamente.
Código
  1. const int NUM_EMPLEADOS = 20;
  2.  
  3. int main() {
  4.  int ventas[NUM_EMPLEADOS];
  5.  for(int i = 0; i < NUM_EMPLEADOS; ++i) {
  6.    //...
  7.  }
  8. }

  • Utiliza funciones que hagan una tarea específica. Así tendrás el código más limpio, no repetirás código y podrás reutilizar una función tantas veces como necesites:
Código
  1. int calcularSumaTotal(int array[], const int longitud) {
  2.  int total = 0;
  3.  for(int i = 0; i < longitud; ++i) total += array[i];
  4.  return total;
  5. }
  6.  
  7. int main() {
  8.  int ventas2019[NUM_EMPLEADOS];
  9.  int ventas2020[NUM_EMPLEADOS];
  10.  //...
  11.  
  12.  int totalVentas2019 = calcularSumaTotal(ventas2019, NUM_EMPLEADOS);
  13.  int totalVentas2020 = calcularSumaTotal(ventas2020, NUM_EMPLEADOS);
  14.  //...
  15.  
  16.  int promedioVentas2019 = totalVentas2019 / NUM_EMPLEADOS;
  17.  int promedioVentas2020 = totalVentas2020 / NUM_EMPLEADOS;
  18.  


Ahora sobre tus dudas específicamente:
  • La primera duda ya te la he resuelto en el apartado de crear tus propias funciones.
  • Para calcular la comisión de cada empleado en cada año basta con lo siguiente:
Código
  1. const float PORCENTAJE_COMISION = 30;
  2.  
  3. int main() {
  4.  int ventas2019[NUM_EMPLEADOS];
  5.  //...
  6.  for(int i = 0; i < NUM_EMPLEADOS; ++i) {
  7.    printf("La comision del empleado %d en el 2019 es de: $%.2f\n", (i+1), ventas2019[i] * PORCENTAJE_COMISION / 100.0f);
  8.  }
  9. }

Aparte de eso:
  • Las líneas 41 y 56 no tienen sentido. Repites un cálculo 20 veces para quedarte únicamente con el último resultado.
  • Además en la línea 56 estás utilizando el contador equivocado.

PD: No utilices <system("pause")>. Utiliza mejor <getchar()>. Hace la misma función y requiere de menos recursos del sistema.
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 ... 102
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines