fechas guardadas en variables char validar ">=, <="

Iniciado por DanielPy, 21 Abril 2015, 18:25 PM

0 Miembros y 1 Visitante están viendo este tema.

DanielPy

Hola a todos.
¿Hay otra manera más práctica para hacer esto?, lo que se me antoja es separar día, mes y año castearlo a int y luego compararlas una a una.-
Dejo la función por si desean hacerme alguna observación.-

void consultation(FILE *ptrFile, Super *super, int tamStructSuper){
char fechaIni[11], fechaFin[11], *p = NULL;
int ch, ok;
float totalPar = 0.0, totalCon = 0.0;

do{
printf( "\n\n Ingrese INICIO de la consulta (formato ==> 11/04/2015)....: " );
fgets(fechaIni, 11, stdin);
if((p=strchr(fechaIni, '\n'))){
*p='\0';
}
else{
while((ch = getchar()) !='\n' && ch!=EOF);
}
ok = strlen(fechaIni);
if( ok != 10 || fechaIni[2] != '/' || fechaIni[5] != '/'){
ok = 0;
}
}while(!ok);

do{
printf( "\n\n Ingrese FINAL de la consulta (formato ==> 11/04/2015).....: " );
fgets(fechaFin, 11, stdin);
if((p=strchr(fechaFin, '\n'))){
*p='\0';
}
else{
while((ch = getchar()) !='\n' && ch!=EOF);
}
ok = strlen(fechaFin);
if( ok != 10 || fechaFin[2] != '/' || fechaFin[5] != '/'){
ok = 0;
}
}while(!ok);

printf( "\n\n =======================================================" );
printf( " \n\n Fecha        Verduler%ca    Almac%cn     Total", 161, 130 );

ok=0;
rewind( ptrFile);
while( fread( super, tamStructSuper, 1, ptrFile ) == 1 ){
if( super->fecha >= fechaIni && super->fecha <= fechaFin ){
ok++;
totalPar = super->verduras + super->almacen;
totalCon += totalPar; 
printf( "\n%11s %12.2f %10.2f %9.2f", super->fecha,  super->verduras, super->almacen, totalPar);
}
}
if( ok > 0 ){
printf( "\n\n Total de la consulta.................$ %.2f", totalCon );
}else{
printf( "\n\n No  hay movimientos entre el %s al %s", fechaIni, fechaFin );
}
MENSAJE;

}

Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

ivancea96

¿Forma más práctica? Puedes hacer una estructura donde almacenar las fechas por partes, y hacer funciones acordes a esa estructura.

DanielPy

Hola ivancea96.
Gracias por ocuparte, lo que me propones es interesante sólo que antes lo voy a intentar de esta manera y veré que resulta.-

a = 30/01/2015 
b = 01/02/2015

Ahora mismo tengo un barullo respetable para validar por ej. a[9] con b[9] cuando llegue a a[6] y b[6] sabré si el año es igual o distinto y luego continuar con el mes y si es igual continuar con el día.-
     
Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

ivancea96

Ese es el problema, que trabajar con char* no es tan intuitivo como trabajar con enteros. Creando una estructura podrás hacer comprobaciones simples.

DanielPy

Hola.
Tienes toda la razón, lo que pasa es que cuando uno está estudiando por querer reinventar la rueda o por desconocimiento cometemos esos errores.
Estoy haciendo la función para validar las fechas para la consulta, como hasta el momento tengo muchos if ni bien funcione la voy a exponer para que me digas (si lo deseas) como puedo optimizarla.-
   
Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

DanielPy

Hola.
Al fin encontré la solución y puedo continuar sin pérdidas de tiempo, no pongo el código porque lo encontré en otro foro y desconozco si se puede, sería interesante volcarlo aquí porque es muy conciso, unas pocas líneas, aclaro que lo digo para los que estamos estudiando porque todos los expertos de este foro seguramente lo conocen, de echo los autores son rir3760 y vangodp.- ;-) ;-) ;-)     
   
Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-