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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda fecha en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda fecha en c  (Leído 2,177 veces)
J.cE

Desconectado Desconectado

Mensajes: 13


Ver Perfil
ayuda fecha en c
« en: 20 Febrero 2014, 18:51 pm »

como estan compañeros, soy nuevo en esta camunidad y me ha sido de mucha ayuda, quisiera que me ayuden con este problema que tengo en un programa para que una fecha ingresada por el usuario si es mayor en 15 dias a la fecha actual y menor a 30 dias de la fecha actual sea aceptada; la fecha actual es tomada de time.h , espero me puedan ayudar con esto 


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: ayuda fecha en c
« Respuesta #1 en: 21 Febrero 2014, 08:08 am »

Estamos encantados de ayudarte... lo único que se te ha olvidado poner tu código y decir dónde te has atascado


En línea

J.cE

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: ayuda fecha en c
« Respuesta #2 en: 21 Febrero 2014, 16:19 pm »

s: es un archivo donde se guardaran los datos, r: es un registro tipo solicitud, f: es donde estan guardos los varoles de time.h para la fecha del computador.


Código:
void nueva_solicitud(FILE *s, solicitud *r_sol, tm *f)
{
int correcto;

s=fopen("solicitudes.dat","a");
if(s==NULL)
puts("ERROR al abrir el archivo solicitudes.dat");
else
{
correcto=0;
puts("ingrese fecha de ida Ejm: dia-mes-año");
do
{
scanf("%d%*c%d%*c%d",&r_sol->d_i, &r_sol->m_i, &r_sol->a_i);
                        /*aqui es donde viene la comprobacion si la fecha ingresada es mayor en 15 y menor que 30 dias apartir de la fecha actual*/
                       /*la fecha actual es tomada de: f->tm_mday, f->tm_mon, f->tm_year;*/
                       /*si la fecha ingresada es correcta entonces correcto se hace verdadero (correcto=1)*/
if(!correcto)
puts("la fecha no es correcta");
}
while(!correcto);
}
}
En línea

Gh057


Desconectado Desconectado

Mensajes: 1.190



Ver Perfil
Re: ayuda fecha en c
« Respuesta #3 en: 21 Febrero 2014, 16:28 pm »

hola J.cE deberías implementar un algoritmo sencillo por vos aunque sea de manera local, cuando funcione, modificas tus estructuras para que tomen los datos desde otro archivo. saludos.
 
En línea

4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: ayuda fecha en c
« Respuesta #4 en: 23 Febrero 2014, 17:33 pm »

quisiera que me ayuden con este problema que tengo en un programa para que una fecha ingresada por el usuario si es mayor en 15 dias a la fecha actual y menor a 30 dias de la fecha actual sea aceptada; la fecha actual es tomada de time.h , espero me puedan ayudar con esto
Para obtener la fecha N días antes o después de la actual los pasos son, utilizando las facilidades de la biblioteca estándar de C:

1) Obtienes la fecha actual con la función time.
2) En base al objeto de tipo time_t obtienes uno de tipo "struct tm" mediante la función localtime o gmtime.
3) Incrementas el valor del campo tm_mon.
4) Reajustas los valores mediante la función mktime.

Un ejemplo sencillo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int main(void)
  6. {
  7.   struct tm a = {0};
  8.   struct tm b = {0};
  9.   time_t now;
  10.  
  11.   now = time(NULL);
  12.   a = b = *localtime(&now);
  13.  
  14.   a.tm_mday -= 54;
  15.   mktime(&a);
  16.   printf("-54 ==> %4d/%02d/%02d\n",
  17.      a.tm_year + 1900, a.tm_mon + 1, a.tm_mday);
  18.  
  19.   printf("Now ==> %4d/%02d/%02d\n",
  20.      b.tm_year + 1900, b.tm_mon + 1, b.tm_mday);
  21.  
  22.   b.tm_mday += 15;
  23.   mktime(&b);
  24.   printf("+15 ==> %4d/%02d/%02d\n",
  25.      b.tm_year + 1900, b.tm_mon + 1, b.tm_mday);
  26.  
  27.   return EXIT_SUCCESS;
  28. }

Y su salida (al día de hoy) es:
Código:
-54 ==> 2013/12/31
Now ==> 2014/02/23
+15 ==> 2014/03/10

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines