Saludos compañeros, ya logré funcionar el tema de las fechas... ahora tengo el siguiente problema...
Tengo esta funcion:
Código C:
Ver originalvoid Validar_fecha(int cadena,int longitud,int PosX, int PosY)
{
int i=0,caracter;
//Introducimos el espacio por pantalla
int puntos;
posicion(PosX,PosY);
for(puntos
=0;puntos
<longitud
;puntos
++)printf(""); posicion(PosX,PosY);
puntos=0;
do
{
posicion(PosX+i,PosY);
if(caracter
>=48&&caracter
<=57){ printf("%c",caracter
); cadena
=caracter
; i
++; }
//Borado de datos
if(caracter==8 && i>0)
{i
--;cadena
=' '; posicion
(PosX
+i
,PosY
);printf("");posicion
(PosX
+i
,PosY
)}//Eliminamos digito en pantalla
}while (caracter!=13 && i<longitud);
}
Esta funcion lo que hace es limitar el numero de valores y que solo sean entre el 1 y el 9 (pulsaciones de teclado)
Bien pues la he implementado con esta funcion:
Código C:
Ver originalstruct data {
int dia;
int ano;
int mes;
};
void Bisiesto(struct data info) {
if ( info.mes == 2 && info.ano % 4 == 0 && info.ano % 100 != 0 || info.ano % 400 == 0 || info. dia > 29 ) {
info.dia = 29;
// printf("El año es Bisiesto, la fecha es :: %i-%i-%i\n", info.dia, info.mes, info.ano);
} else if ( info. dia > 29 ) {
info.dia = 30;
// printf("El año Bisiesto, la fecha es :: %i-%i-%i\n", info.dia, info.mes, info.ano);
} else {
// printf("El año Bisiesto, la fecha es :: %i-%i-%i\n", info.dia, info.mes, info.ano);
}
};
void Mes_menor(struct data info) {
if ( info.mes == 1 || info.mes == 3 || info.mes == 4 || info.mes == 8 && info.dia > 30 ) {
info.dia = 30;
// printf("Hoy estamos a :: %i-%i-%i\n", info.dia, info.mes, info.ano);
} else if ( info.mes == 5 || info.mes == 6 || info.mes == 7 || info.mes == 9 ) {
// printf("Hoy estamos a :: %i-%i-%i\n", info.dia, info.mes, info.ano);
}
}
int validar_fecha()
{
struct data info;
//Validacion de la fecha
posicion
(15,14); fprintf(stdout
,"*Fecha Promocion: (DD/MM/AAAA)");
/*do { */ Validar_fecha(info.dia,2,34,14); /* }while( info.dia < 31 || info.dia > 0 ); */
/*do { */ Validar_fecha(info.mes,2,37,14); /*}while( info.mes < 12 || info.mes > 0 );*/
/*do { */ Validar_fecha(info.ano,4,40,14); /*}while( info.ano < 2012 || info.ano > 2008 );*/
if ( info.dia > 31 || info.dia < 0 || info. mes > 12 || info. mes < 0 || info.ano < 0 ) { error=7; box_error(); validar_fecha(); }
Bisiesto(info);
Mes_menor(info);
struct datos info_datos[SIZE];
//Pasamos de INT a CHAR
itoa(info.
dia, info_datos
[0].
dia, 10); itoa(info.
mes, info_datos
[0].
mes, 10); itoa(info.
ano, info_datos
[0].
ano, 10);
printf("Fecha de Promocion = ( %s / %s / %s )", info_datos
[0].
dia, info_datos
[0].
mes, info_datos
[0].
ano);
Sleep(1000);
};
Para juntarlas lo unico que hago en un principio es llamar a la funcion
validar_fechas();
y lo que hace que se metan en el array es lo siguiente:
pero no se porque NO me funciona nada!
=S no se que hacer
gracias ;)