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 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ... 160
31  Programación / Programación C/C++ / Re: Pasar string a time. Número de días entre dos fechas en: 9 Mayo 2015, 16:58 pm
Para obtener la diferencia (en segundos) de dos fechas puedes utilizar la función difftime, esta requiere dos argumentos de tipo time_t, el primero es la fecha actual y la obtienes mediante una llamada a la función time.

La segunda fecha la introduce el usuario, aquí puedes obtener directamente los valores de dia, mes y año para una estructura tipo "struct tm" y a partir de esta obtener uno de tipo time_t con mktime. Mas o menos así:
Código
  1. struct tm d = {0};
  2. time_t b;
  3.  
  4. puts("Introduce la fecha (aaaa mm dd):");
  5. if (scanf("%d %d %d", &d.tm_year, &d.tm_mon, &d.tm_mday) != 3)
  6.   return EXIT_FAILURE;
  7. d.tm_year -= 1900; /* 0 == 1900, 100 == 2000, etc. */
  8. d.tm_mon--; /* 0 == Enero, 1 == Febrero, etc. */
  9.  
  10. /* Validacion de los campos tm_year, tm_mon y tm_mday */
  11.  
  12. b = mktime(&d);
  13.  
  14. /* ... */

Un saludo
32  Programación / Programación C/C++ / Re: Ayudame Con C++ en: 22 Abril 2015, 03:31 am
Mencionas que estas aprendiendo C++ pero no utilizas las características de ese lenguaje (¿C o C++?). Ademas hay que evitar el uso de variables "globales" cuando no se requiera, el uso de gets y conio. Mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|.

Los errores importantes en el programa son dos:

1) Mediante scanf tratas de leer el tipo con "%s":
Código
  1. scanf("%s", &tipo);
Cuando deberías utilizar "%d" ya que esa variable es de tipo int.

2) Cuando imprimes el total con printf:
Código
  1. printf("%.2f", &total);
El operador "&" esta demás.

Un saludo
33  Programación / Programación C/C++ / Re: Numero menor recursivo en: 21 Abril 2015, 03:39 am
rir3760 porque sacrificar rendimiento y velocidad por únicamente ahorrarte un parámetro mas
Cierto si se trata de una macro. Yo asumo (por sentido común, nada mas) que es una función y en ese caso no hay problema pero seria mejor que el OP (me refiero a sora_ori ) nos indicara que es esa bendita extensión.

En el caso de que exista una macro con ese nombre como bien comentas se presentarían problemas como las llamadas múltiples, en ese escenario basta con colocar "min" entre paréntesis para así evitar la macro y terminar con una llamada a función.

Pero, de nuevo, considerar a "min" como una función solo fue una educated guess.

Un saludo
34  Programación / Programación C/C++ / Re: arreglo con varias modas en: 16 Abril 2015, 17:35 pm
pero yo quiero que me bote  no solo a uno sino también al otro
EL ELEMENTO QUE MAS SE REPITE ES 2
EL ELEMENTO QUE MAS SE REPITE ES 1
sugerencias.
Para ello debes almacenar en un array la repetición de cada numero. Por simplicidad ese array lo inicializas a cero utilizando -1 como valor centinela para indicar que un numero es la repetición de algún otro anterior.

Para explicarlo mejor un ejemplo en C:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define PROCESADO  -1
  5.  
  6. #define NUM_ELEM(a) (sizeof (a) / sizeof (a[0]))
  7.  
  8. int main(void)
  9. {
  10.   int num[] = {2, 3, 1, 2, 4, 1, 5, 1, 2};
  11.   int rep[NUM_ELEM(num)] = {0};
  12.   size_t num_elem = NUM_ELEM(num);
  13.   size_t i;
  14.   size_t j;
  15.  
  16.   for (i = 0; i < num_elem; i++){
  17.      if (rep[i] == PROCESADO)
  18.         continue;
  19.  
  20.      rep[i] = 1;
  21.      for (j = i + 1; j < num_elem; j++)
  22.         if (num[i] == num[j]){
  23.            rep[i]++;
  24.            rep[j] = PROCESADO;
  25.         }
  26.   }
  27.  
  28.   for (i = 0; i < num_elem; i++)
  29.      if (rep[i] != PROCESADO)
  30.         printf("%d: %2d\n", num[i], rep[i]);
  31.  
  32.   return EXIT_SUCCESS;
  33. }
Y su salida es:
Código:
2:  3
3:  1
1:  3
4:  1
5:  1

Espero que te de una idea para modificar tu programa en C++, la aproximación es la misma mas el calculo del máximo de repeticiones e imprimir los números que cumplan con ese criterio.

Un saludo
35  Programación / Programación C/C++ / Re: Numero menor recursivo en: 16 Abril 2015, 17:10 pm
ya tengo mejorado el código. Lo que pretendia hacer con la variable "medida" era saber los elementos que habrán en el vector.
Lo primero que debes hacer es evitar el uso de la biblioteca conio de Borland, mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|. Si lo haces porque utilizas Dev-C++ y este no incluye la característica de pausa automática cambiate a cualquier otro IDE, el mas parecido es Orwell Dev-C++.

En el programa utilizas la función "min" la cual es una extensión, otro problema es no darle un valor inicial a la variable "menor_encontrado" con ello este es no definido o "basura".

Por ultimo la función no necesita de tres argumentos, con solo dos basta:
Código
  1. int valorMenor(int *v, int n)
  2. {
  3.   return n == 1 ? v[0] : min(v[0], valorMenor(v + 1, n - 1));
  4. }

Otra opción es utilizar una variable auxiliar, con ello se evita el uso de la función "min":
Código
  1. int valorMenor(int a[], int n)
  2. {
  3.   int r;
  4.  
  5.   return n == 1 || a[0] < (r = valorMenor(a + 1, n - 1)) ? a[0] : r;
  6. }

Un saludo
36  Programación / Programación C/C++ / Re: Ayuda para un contador en: 16 Abril 2015, 16:39 pm
Hice lo que sugeriste y al principio entra y hace el aumento bien, pero luego comienza hacer de de 2 en 2.
En el fragmento que publicas las llaves están mal, para explicarlo mejor la sentencia de selección switch se procesa así:
Código
  1. switch(num_op){
  2. case 1:
  3.   printf("Consulta: %d\n\n", c);
  4.   printf("Ingrese el nombre del lugar de origen del recorrido:\n");
  5.   scanf("%s", &s_origen); printf("\n");
  6.  
  7.   printf("Ingrese el nombre del lugar de destino del recorrido:\n");
  8.   scanf("%s", &s_destino); printf("\n");
  9.  
  10.   ValiHora();
  11.   ValiPresupuesto();
  12. }
  13. break;
Ahí tienes un switch con un solo caso y la sentencia "break;" puede generar resultados no deseados (o bien el compilador debe emitir un mensaje de error si esta es "huérfana").

Mejor publica el código fuente completo.

Un saludo
37  Programación / Programación C/C++ / Re: múltiplos del primer número que sean menores que el segundo en: 15 Abril 2015, 03:44 am
necesito hacer esto:

Dados dos números naturales, calcule e imprima los múltiplos del primer número que sean menores que el segundo.

No logro hacerlo, a lo mejor no se cómo sacar los múltiplos y printearlos correctamente, pueden ayudarme, debo printear todos los múltiplos del primer número que sean menores que el segundo número ingresado.
Los múltiplos de un numero "a" son "a", "2a", "3a", ... Para imprimirlos basta con un bucle como este:
Código
  1. /* Imprimir los multiplos de a menores que b */
  2. for (i = a; i < b; i += a)
  3.   printf(" %d", i);
  4. putchar('\n');

Un saludo
38  Programación / Programación C/C++ / Re: Explicacion de WindowProcedure en: 14 Abril 2015, 17:57 pm
La mayoría de esos mensajes se explican en el curso theForger's Win32 API Programming Tutorial.

Un saludo
39  Programación / Programación C/C++ / Re: Como hacer un programa sin ventana en: 14 Abril 2015, 17:53 pm
Es posible pero si apenas empiezas (lo menciono por tu otro tema) tu aprendizaje de la Win32 API seria mejor dejarlo para después.

Dos paginas (ambas en ingles) donde se trata el tema son:
Custom-Shaped and Transparent Windows
Win32 Window Skinning

Un saludo
40  Programación / Programación C/C++ / Re: letras iniciales de una oracion en mayuscula en: 11 Abril 2015, 19:48 pm
La aproximación que expones, presenta un comportamiento indefinido debido a que estas modificando un puntero que apunta a una cadena literal (linea 19)
Ouch! Gracias por indicarlo, ya actualice el programa.

Un saludo
Páginas: 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ... 160
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines