SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: pablo_ivan57 en Domingo 6 de Enero de 2008, 18:58
-
Hola a todos, bueno el programa que propongo tiene que imprimir Enero 06, de 2007 en lugar de 01/06/07.
Hice la siguiente función:
void Transformar(char *p,int *a,int *b,int *c)
{
char *s=p;//p es la cadena que se ingresa del teclado 01/06/07
int cont=0,n;
for(;*s!='\0';s++)
{
n=10,*c=0;
for(;((*s!='/')||(*s!='\0'));s++)
{
(*c)=(*c)+((*s-46)*(n));
n=n/10;
cont++;
}
switch(cont){
case 2:
*a=*c; break;
case 4:
*b=*c; break;
case 6:
{
if ((*c>9)&&(*c<100))
*c=1900+*c;
else if ((*c<10)&&(*c>0))
*c=2000+*c;
break;
}}
}
}
El problema es en la parte con negrita, va todo bien , lo comprobé con el debugger pero cuando *s toma el valor de /, no compara, por lo que nunca sale del bucle.
Ignoro que error estoy cometiendo.
Además como punto extra, no tengo idea de como hacer para que con solo el año ingresado como /aa, pueda determinar que siglo es?, hay como?.
Espero me puedan ayudar.
Gracias.
Saludos.
-
Hola pablo.
Ahora no tengo tiempo para revisar todo el código, pero a simple vista me parece que las condiciones deberían ser una conjunción en vez de una disyunción.
Un saludo
PD: Mas tarde lo veo con mas tiempo
-
Además como punto extra, no tengo idea de como hacer para que con solo el año ingresado como /aa, pueda determinar que siglo es?, hay como?.
la solucion mas usada para esto es definir una venta, por ejemplo 29, y determinar que todas las fechas posteriores al 29 seran del siglo XX y las anteriores seran del siglo XXI.
asi 30 seria 1930 y 28 seria 1928.
ojala y te sirva.