Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: SonaArtica en 27 Agosto 2012, 08:39 am



Título: {RESUELTO}Como saco el dia?,Codeblocks
Publicado por: SonaArtica en 27 Agosto 2012, 08:39 am
Le hice una segunda modificacion al codigo y me quede en que nose cmo hacer para que me quede   el dia :(
Código
  1. #include <stdio.h>
  2. #include <math.h>
  3. int main(){
  4.        int mes,fecha,dia,año;
  5.        printf("Ingrese una fecha en el sig formato dd/mm/aa sin los / \n");
  6.        fflush(stdin);
  7.        scanf(" %d",&fecha);
  8.        año=(fecha%100);
  9.        dia=(fecha/10);
  10.        mes=(fecha/100)%100;
  11.        printf("El año  es %d",año);
  12.        printf("El dia es %d",dia);
  13.        printf("El mes es %d",mes);
  14.  
  15.  
  16.  
  17. return 0;
  18. }


Gracias por la ayuda  y Saludos   :-X


Título: Re: Como saco el dia?,Codeblocks
Publicado por: BlackZeroX en 27 Agosto 2012, 09:10 am
¿Te sirve?.

Código
  1.  
  2. #include <stdio.h>
  3. #include <math.h>
  4. int main()
  5. {
  6.    int dia, mes, ano;
  7.    char div = '\0';
  8.    printf("Ingrese una fecha en el sig formato dd/mm/aaaa (ejemplo: 21/01/1989)\n");
  9.    scanf("%d%c%d%c%d",&dia, &div, &mes, &div, &ano);
  10.    fflush(stdin);
  11.    printf("El año es %d\n",ano);
  12.    printf("El dia es %d\n",dia);
  13.    printf("El mes es %d\n",mes);
  14.    getchar();
  15.    return 0;
  16. }
  17.  
  18.  

o tambien así como es lo que tu quieres...

Código
  1.  
  2. #include <stdio.h>
  3. #include <math.h>
  4. int main(){
  5.    int mes,fecha,dia, ano;
  6.    printf("Ingrese una fecha en el sig formato dd/mm/aa sin los / \n");
  7.    scanf(" %d",&fecha);
  8.    fflush(stdin);
  9.    dia = (fecha / 10000);
  10.    mes = (fecha - (dia * 10000)) / 100;
  11.    ano = fecha - (dia * 10000) - (mes * 100);
  12.    printf("El año es %d\n",ano);
  13.    printf("El dia es %d\n",dia);
  14.    printf("El mes es %d\n",mes);
  15.    getchar();
  16.    return 0;
  17. }
  18.  
  19.  

Dulces Lunas!¡.


Título: Re: Como saco el dia?,Codeblocks
Publicado por: do-while en 27 Agosto 2012, 09:22 am
¡Buenas!

El algoritmo que utilizas para sacar los datos de dia, mes y año (no utilices la ñ, para el compilador es un caracter estraño), no es correcto.

Si tienes un numero con el formato ddmmaa, tendras que el numero es:

aa * 1000 + mm * 1001 + dd * 1002 = num

Por lo tanto:

aa = num %100
mm = (num / 100) % 100
dd = (num / 1002)

Siemre suponiendo que el usuario ha introducido un numero de 6 digitos.

¡Saludos!

PD: Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.


Título: Re: Como saco el dia?,Codeblocks
Publicado por: rir3760 en 27 Agosto 2012, 14:57 pm
¿Te sirve?.

Código
  1. char div = '\0';
  2. printf("Ingrese una fecha en el sig formato dd/mm/aaaa (ejemplo: 21/01/1989)\n");
  3. scanf("%d%c%d%c%d",&dia, &div, &mes, &div, &ano);
Dos comentarios:

* Si el carácter a leer se descarta de inmediato se puede utilizar "%*c" con ese efecto y nos ahorramos una variable:
Código
  1. scanf("%d%*c%d%*c%d",&dia, &mes, &ano);

* Si se desea que el carácter separador sea si o si el '/' se puede indicar directamente:
Código
  1. scanf("%d/%d/%d",&dia, &mes, &ano);

Un saludo


Título: Re: Como saco el dia?,Codeblocks
Publicado por: SonaArtica en 27 Agosto 2012, 18:23 pm

¿Te sirve?.

Código
  1.  
  2. #include <stdio.h>
  3. #include <math.h>
  4. int main()
  5. {
  6.    int dia, mes, ano;
  7.    char div = '\0';
  8.    printf("Ingrese una fecha en el sig formato dd/mm/aaaa (ejemplo: 21/01/1989)\n");
  9.    scanf("%d%c%d%c%d",&dia, &div, &mes, &div, &ano);
  10.    fflush(stdin);
  11.    printf("El año es %d\n",ano);
  12.    printf("El dia es %d\n",dia);
  13.    printf("El mes es %d\n",mes);
  14.    getchar();
  15.    return 0;
  16. }
  17.  
  18.  

o tambien así como es lo que tu quieres...

Código
  1.  
  2. #include <stdio.h>
  3. #include <math.h>
  4. int main(){
  5.    int mes,fecha,dia, ano;
  6.    printf("Ingrese una fecha en el sig formato dd/mm/aa sin los / \n");
  7.    scanf(" %d",&fecha);
  8.    fflush(stdin);
  9.    dia = (fecha / 10000);
  10.    mes = (fecha - (dia * 10000)) / 100;
  11.    ano = fecha - (dia * 10000) - (mes * 100);
  12.    printf("El año es %d\n",ano);
  13.    printf("El dia es %d\n",dia);
  14.    printf("El mes es %d\n",mes);
  15.    getchar();
  16.    return 0;
  17. }
  18.  
  19.  

Dulces Lunas!¡.

Gracias BlackZeroX (Astaroth)  ;D Me quedo cn el segundo codigo que es de la manera que lo estaba haciendo,gracias.

Do-while: SI jeje se me paso cuando lo pase aca, pero en el codigo lo tenia cmo ano y la ñ solo la utilize en el printf, igual gracias  ;-)


Título: Re: Como saco el dia?,Codeblocks
Publicado por: SonaArtica en 27 Agosto 2012, 18:25 pm
* Si se desea que el carácter separador sea si o si el '/' se puede indicar directamente:
Código
  1. scanf("%d/%d/%d",&dia, &mes, &ano);

Un saludo

Gracias tambien a  rir3760, no sabia que en el scanf se podia poner la / sin problemas. :D