SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: pablo_ivan57 en Domingo 6 de Enero de 2008, 18:58

Título: Problema Al Comparar Char
Publicado 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.
Título: Re: Problema Al Comparar Char
Publicado por: Mollense en Domingo 6 de Enero de 2008, 19:08
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
Título: Re: Problema Al Comparar Char
Publicado por: Loloto en Miércoles 9 de Enero de 2008, 17:06
Cita de: "pablo_ivan57"
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.