AMIGOS!!! AHORA SI NECESITO SOLAMENTE VALIDAR QUE NO ENTREN LETRAS TENGO EL CODIGO

POLYTA_1977
11 de Julio del 2004
AMIGOS, YA ME FALTA LO ULTIMO GRACIAS A SU AYUDA HE APRENDIDO MUCHO!!!!!! Y APARTE HE PODIDO AVANZAR, HE LOGRADO VALIDAR LOS MESES Y LA ENTRADA DE NUMEROS, PERO AHORA FALTA LO ULTIMO
-VALIDAR QUE NO ENTREN LETRAS
-VALIDAR QUE NO DEJE ESPACIOS
-VALIDAR QUE NO PRESIONE ENTER

AMIGOS REALMENTE FALTA ESTO SOLAMENTE, SI ALGUIEN PUEDE AYUDARME COMO SIEMPRE LO HAN ECHO ORIENTARME SE LO AGRADEZCO MUCHO.
MIREN EL CODIGO QUE ESTA ES EL SIGUIENTE, LA IDEA ES QUE LA VALIDACION QUEDE DENTRO DEL CODIGO POR FAVOR!!!!!
CUANDO LO TENGA LISTO AMIGOS, AUNQUE NO PUEDAN AYUDARME LO PONDRE ACA PORQUE SE LO MERECEN!!!!!!!
SALUDOS....................

#include<dos.h>
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<conio.h>
struct date fecha;
int ValidarDia();
int meses[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int fnc_fecha();
int dia;
void fnc_hora();

int main()
{
char opcion;
do
{
clrscr();
gotoxy(35,2);
printf("RUTINA DE FECHAn");
gotoxy(25,10);
printf("1.- Fecha n");
gotoxy(25,12);
printf("2.- Hora n");
gotoxy(25,14);
printf("3.- Salirn ");

opcion=getchar();
if (opcion=='1')
{
/* if(fnc_fecha()==0)
{
gotoxy(25,15);
printf("nError El mes '%d' solo admite %d dias",fecha.da_mon,meses[fecha.da_mon-1]);;
printf("n pulsar una tecla para continuar ....");
getch();
fnc_fecha();
}*/
fnc_fecha();
// main();
}
else if(opcion=='2')
fnc_hora();
}
while(opcion!='3');
exit(0);
return 1;

}


int fnc_fecha()
{
clrscr();
int dia; int mes; int ano;
getdate(&fecha);

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy (1,3);
printf("Su fecha actual es: %d-%d-%d",fecha.da_day, fecha.da_mon,fecha.da_year);

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,4);printf(" Ingrese nuevo dia :");
scanf("%d",&dia);
while (dia<0 || dia>31)
{
gotoxy(40,4);printf("Dia fuera de rango (0-31)");
delay(2000);
fnc_fecha();
}


fecha.da_day=dia;

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,5);printf(" Ingrese nuevo mes :");
scanf("%d",&mes);
while (mes<0 || mes>12)
{
gotoxy(40,5);printf("Mes fuera de rango (1-12)");
delay(2000);
fnc_fecha();
}
while (mes==2 && dia>28)
{
gotoxy(40,5);printf("Mes con 28 dias");
delay(2000);
fnc_fecha();
}
while (mes==4 || mes==6 || mes==9 || mes==11 && dia>30)
{
gotoxy(40,5);printf("Mes con 30 dias");
delay(2000);
fnc_fecha();
}

fecha.da_mon=mes;

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,6);printf(" Ingrese nuevo ano :");
scanf("%d",&ano);
while (ano<1980 || ano>2099)
{
gotoxy(40,6);printf("Ano fuera de rango (1980-2099)");
delay(2000);
fnc_fecha();
}
fecha.da_year=ano;

//+++++++++++++++++++++++++++++++++++++++++++++

if(ValidarDia())
fecha.da_day=dia;
else
return 0;
//++++++++++++++++++++++++++++++++++++++++++++

setdate(&fecha);
gotoxy(1,7);
printf("Su nueva fecha es: %d-%d-%dn",fecha.da_day, fecha.da_mon,fecha.da_year);
delay(2500);
main();
return 1;
}

//****************************************************************************
void fnc_hora()
{
clrscr();
int horas; int minutos; int segundos;
struct time hora;
gettime(&hora);
gotoxy(1,2);
printf("Su hora actual es: %u:%u:%u",hora.ti_hour, hora.ti_min,hora.ti_sec);

//++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,3);printf(" Ingrese nueva hora :");
scanf("%u",&horas);
while (horas<0 || horas>24)
{
gotoxy(40,3);printf("Hora fuera de rango (0-24)");
delay(2000);
fnc_hora();
}

hora.ti_hour=horas;


//+++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,4);printf(" Ingrese nuevos minutos :");
scanf("%u",&minutos);
while (minutos<0 || minutos>60)
{
gotoxy(40,4);printf("Minutos fuera de rango (0-60)");
delay(2000);
fnc_hora();
}

hora.ti_min=minutos;

//+++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,5);printf(" Ingrese nuevos segundos:");
scanf("%u",&segundos);
while (segundos<0 || segundos>60)
{
gotoxy(40,5);printf("Segundos fuera de rango (0-60)");
delay(2000);
fnc_hora();
}

hora.ti_sec=segundos;

//++++++++++++++++++++++++++++++++++++++++++++++++++++++
hora.ti_hour=horas;
hora.ti_min=minutos;
hora.ti_sec=segundos;
settime(&hora);
gotoxy(1,6);
printf("Su nueva hora es: %u:%u:%un",hora.ti_hour,hora.ti_min,hora.ti_sec);
delay(2500);
main();

}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int ValidarDia()
{
if(dia<=meses[fecha.da_mon-1])
return 1;
else
return 0;
}


LES ENCARGO POR FAVOR!!!!!!!!! LO QUE MAS ME INTERESA ES LA ENTRADA DE LETRAS!!!!!! GRACIAS REALMENTE NO HE PODIDO HACERLA, TANTO EN LA FNC_FECHA COMO EN FNC_HORA.




javi
11 de Julio del 2004
Buenas debes depurar un poco tu codigo ,ya que hay muchas cosas que no usas .
La funcion fnc_Fecha() ,la declaras int pero luego no usas para nada lo que retorna ,la zona que lo usa esta entre comentario ,asi que viendo como lo has hecho al final ,puedes quitar lo de validar y lo que esa funcion implica y hacer la funcion fnc_fecha() void igual que fnc_date() .
Con respecto a lo de los caracteres ,si scanf pide un int y le introduces un char ,devolvera un error que es 0 ,asi que mas o menos tu programa podia quedar asi:

#include<dos.h>
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<conio.h>

void fnc_fecha();
void fnc_hora();

int main()
{
char opcion;
do
{
clrscr();
gotoxy(35,2);
printf("RUTINA DE FECHA\n");
gotoxy(25,10);
printf("1.- Fecha \n");
gotoxy(25,12);
printf("2.- Hora \n");
gotoxy(25,14);
printf("3.- Salir\n ");
fflush(stdin);
opcion=getchar();
if (opcion==\'1\')
fnc_fecha();

else if(opcion==\'2\')
fnc_hora();
}
while(opcion!=\'3\');

return 1;

}


void fnc_fecha()
{

int dia,mes,ano;
struct date fecha;
clrscr();
getdate(&fecha);

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy (1,3);
printf("Su fecha actual es: %d-%d-%d",fecha.da_day, fecha.da_mon,fecha.da_year);

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,4);printf(" Ingrese nuevo dia :");
while(scanf("%d",&dia)==0)
{
printf("\nError, letra introducida ,debe ser un numero");
delay(2000);
clrscr();
printf("Su fecha actual es: %d-%d-%d",fecha.da_day, fecha.da_mon,fecha.da_year);
gotoxy(1,4);printf(" Ingrese nuevo dia :");
fflush(stdin);
}
while (dia<0 || dia>31)
{
gotoxy(40,4);printf("Dia fuera de rango (0-31)");
delay(2000);
fnc_fecha();
}


fecha.da_day=dia;

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,5);printf(" Ingrese nuevo mes :");
while(scanf("%d",&mes)==0)
{
printf("\nError, letra introducida ,debe ser un numero");
delay(2000);
clrscr();
printf("Su fecha actual es: %d-%d-%d",fecha.da_day, fecha.da_mon,fecha.da_year);
gotoxy(1,4);printf(" Ingrese nuevo mes :");
fflush(stdin);
}
while (mes<0 || mes>12)
{
gotoxy(40,5);printf("Mes fuera de rango (1-12)");
delay(2000);
fnc_fecha();
}
while (mes==2 && dia>28)
{
gotoxy(40,5);printf("Mes con 28 dias");
delay(2000);
fnc_fecha();
}
while (mes==4 || mes==6 || mes==9 || mes==11 && dia>30)
{
gotoxy(40,5);printf("Mes con 30 dias");
delay(2000);
fnc_fecha();
}

fecha.da_mon=mes;

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,6);printf(" Ingrese nuevo ano :");
while(scanf("%d",&ano)==0)
{
printf("\nError, letra introducida ,debe ser un numero");
delay(2000);
clrscr();
printf("Su fecha actual es: %d-%d-%d",fecha.da_day, fecha.da_mon,fecha.da_year);
gotoxy(1,4);printf(" Ingrese nuevo año :");
fflush(stdin);
}
while (ano<1980 || ano>2099)
{
gotoxy(40,6);printf("Ano fuera de rango (1980-2099)");
delay(2000);
fnc_fecha();
}
fecha.da_year=ano;



setdate(&fecha);
gotoxy(1,7);
printf("\n\nSu nueva fecha es: %d-%d-%d\n\n\n",fecha.da_day, fecha.da_mon,fecha.da_year);
system("pause");
}

//****************************************************************************
void fnc_hora()
{

int horas,minutos,segundos;
struct time hora;
clrscr();
gettime(&hora);
gotoxy(1,2);
printf("Su hora actual es: %d:%d:%d",hora.ti_hour, hora.ti_min,hora.ti_sec);

//++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,3);printf(" Ingrese nueva hora :");
while(scanf("%d",&horas)==0)
{
printf("\nError, letra introducida ,debe ser un numero");
delay(2000);
clrscr();
printf("Su hora actual es: %d:%d:%d",hora.ti_hour, hora.ti_min,hora.ti_sec);
gotoxy(1,3);printf(" Ingrese nueva hora :");
fflush(stdin);
}
while (horas<0 || horas>24)
{
gotoxy(40,3);printf("Hora fuera de rango (0-24)");
delay(2000);
fnc_hora();
}

hora.ti_hour=horas;


//+++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,4);printf(" Ingrese nuevos minutos :");
while(scanf("%d",&minutos)==0)
{
printf("\nError, letra introducida ,debe ser un numero");
delay(2000);
clrscr();
printf("Su hora actual es: %d:%d:%d",hora.ti_hour, hora.ti_min,hora.ti_sec);
gotoxy(1,3);printf(" Ingrese nuevos minutos :");
fflush(stdin);
}
while (minutos<0 || minutos>60)
{
gotoxy(40,4);printf("Minutos fuera de rango (0-60)");
delay(2000);
fnc_hora();
}

hora.ti_min=minutos;

//+++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,5);printf(" Ingrese nuevos segundos:");
while(scanf("%d",&segundos)==0)
{
printf("\nError, letra introducida ,debe ser un numero");
delay(2000);
clrscr();
printf("Su hora actual es: %d:%d:%d",hora.ti_hour, hora.ti_min,hora.ti_sec);
gotoxy(1,3);printf(" Ingrese nuevos segundos :");
fflush(stdin);
}
while (segundos<0 || segundos>60)
{
gotoxy(40,5);printf("Segundos fuera de rango (0-60)");
delay(2000);
fnc_hora();
}

hora.ti_sec=segundos;

//++++++++++++++++++++++++++++++++++++++++++++++++++++++
hora.ti_hour=horas;
hora.ti_min=minutos;
hora.ti_sec=segundos;
settime(&hora);
gotoxy(1,6);
printf("\n\nSu nueva hora es: %d:%d:%d\n\n\n",hora.ti_hour,hora.ti_min,hora.ti_sec);
system("pause");
}

javi
11 de Julio del 2004
No se porque sale el caracter en muchos sitios.
A ver si ahora queda bien :

#include<dos.h>
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<conio.h>

void fnc_fecha();
void fnc_hora();

int main()
{
char opcion;
do
{
clrscr();
gotoxy(35,2);
printf("RUTINA DE FECHAn");
gotoxy(25,10);
printf("1.- Fecha n");
gotoxy(25,12);
printf("2.- Hora n");
gotoxy(25,14);
printf("3.- Salirn ");
fflush(stdin);
opcion=getchar();
if (opcion=='1')
fnc_fecha();

else if(opcion=='2')
fnc_hora();
}
while(opcion!='3');

return 1;

}


void fnc_fecha()
{

int dia,mes,ano;
struct date fecha;
clrscr();
getdate(&fecha);

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy (1,3);
printf("Su fecha actual es: %d-%d-%d",fecha.da_day, fecha.da_mon,fecha.da_year);

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,4);printf(" Ingrese nuevo dia :");
while(scanf("%d",&dia)==0)
{
printf("nError, letra introducida ,debe ser un numero");
delay(2000);
clrscr();
printf("Su fecha actual es: %d-%d-%d",fecha.da_day, fecha.da_mon,fecha.da_year);
gotoxy(1,4);printf(" Ingrese nuevo dia :");
fflush(stdin);
}
while (dia<0 || dia>31)
{
gotoxy(40,4);printf("Dia fuera de rango (0-31)");
delay(2000);
fnc_fecha();
}


fecha.da_day=dia;

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,5);printf(" Ingrese nuevo mes :");
while(scanf("%d",&mes)==0)
{
printf("nError, letra introducida ,debe ser un numero");
delay(2000);
clrscr();
printf("Su fecha actual es: %d-%d-%d",fecha.da_day, fecha.da_mon,fecha.da_year);
gotoxy(1,4);printf(" Ingrese nuevo mes :");
fflush(stdin);
}
while (mes<0 || mes>12)
{
gotoxy(40,5);printf("Mes fuera de rango (1-12)");
delay(2000);
fnc_fecha();
}
while (mes==2 && dia>28)
{
gotoxy(40,5);printf("Mes con 28 dias");
delay(2000);
fnc_fecha();
}
while (mes==4 || mes==6 || mes==9 || mes==11 && dia>30)
{
gotoxy(40,5);printf("Mes con 30 dias");
delay(2000);
fnc_fecha();
}

fecha.da_mon=mes;

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,6);printf(" Ingrese nuevo ano :");
while(scanf("%d",&ano)==0)
{
printf("nError, letra introducida ,debe ser un numero");
delay(2000);
clrscr();
printf("Su fecha actual es: %d-%d-%d",fecha.da_day, fecha.da_mon,fecha.da_year);
gotoxy(1,4);printf(" Ingrese nuevo año :");
fflush(stdin);
}
while (ano<1980 || ano>2099)
{
gotoxy(40,6);printf("Ano fuera de rango (1980-2099)");
delay(2000);
fnc_fecha();
}
fecha.da_year=ano;



setdate(&fecha);
gotoxy(1,7);
printf("nnSu nueva fecha es: %d-%d-%dnnn",fecha.da_day, fecha.da_mon,fecha.da_year);
system("pause");
}

//****************************************************************************
void fnc_hora()
{

int horas,minutos,segundos;
struct time hora;
clrscr();
gettime(&hora);
gotoxy(1,2);
printf("Su hora actual es: %d:%d:%d",hora.ti_hour, hora.ti_min,hora.ti_sec);

//++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,3);printf(" Ingrese nueva hora :");
while(scanf("%d",&horas)==0)
{
printf("nError, letra introducida ,debe ser un numero");
delay(2000);
clrscr();
printf("Su hora actual es: %d:%d:%d",hora.ti_hour, hora.ti_min,hora.ti_sec);
gotoxy(1,3);printf(" Ingrese nueva hora :");
fflush(stdin);
}
while (horas<0 || horas>24)
{
gotoxy(40,3);printf("Hora fuera de rango (0-24)");
delay(2000);
fnc_hora();
}

hora.ti_hour=horas;


//+++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,4);printf(" Ingrese nuevos minutos :");
while(scanf("%d",&minutos)==0)
{
printf("nError, letra introducida ,debe ser un numero");
delay(2000);
clrscr();
printf("Su hora actual es: %d:%d:%d",hora.ti_hour, hora.ti_min,hora.ti_sec);
gotoxy(1,3);printf(" Ingrese nuevos minutos :");
fflush(stdin);
}
while (minutos<0 || minutos>60)
{
gotoxy(40,4);printf("Minutos fuera de rango (0-60)");
delay(2000);
fnc_hora();
}

hora.ti_min=minutos;

//+++++++++++++++++++++++++++++++++++++++++++++++++++++
gotoxy(1,5);printf(" Ingrese nuevos segundos:");
while(scanf("%d",&segundos)==0)
{
printf("nError, letra introducida ,debe ser un numero");
delay(2000);
clrscr();
printf("Su hora actual es: %d:%d:%d",hora.ti_hour, hora.ti_min,hora.ti_sec);
gotoxy(1,3);printf(" Ingrese nuevos segundos :");
fflush(stdin);
}
while (segundos<0 || segundos>60)
{
gotoxy(40,5);printf("Segundos fuera de rango (0-60)");
delay(2000);
fnc_hora();
}

hora.ti_sec=segundos;

//++++++++++++++++++++++++++++++++++++++++++++++++++++++
hora.ti_hour=horas;
hora.ti_min=minutos;
hora.ti_sec=segundos;
settime(&hora);
gotoxy(1,6);
printf("nnSu nueva hora es: %d:%d:%dnnn",hora.ti_hour,hora.ti_min,hora.ti_sec);
system("pause");
}