{RESUELTO}Como saco el dia?,Codeblocks

Iniciado por SonaArtica, 27 Agosto 2012, 08:39 AM

0 Miembros y 1 Visitante están viendo este tema.

SonaArtica

Le hice una segunda modificacion al codigo y me quede en que nose cmo hacer para que me quede   el dia :(
#include <stdio.h>
#include <math.h>
int main(){
       int mes,fecha,dia,año;
       printf("Ingrese una fecha en el sig formato dd/mm/aa sin los / \n");
       fflush(stdin);
       scanf(" %d",&fecha);
       año=(fecha%100);
       dia=(fecha/10);
       mes=(fecha/100)%100;
       printf("El año  es %d",año);
       printf("El dia es %d",dia);
       printf("El mes es %d",mes);



return 0;
}



Gracias por la ayuda  y Saludos   :-X
<z

BlackZeroX

#1
¿Te sirve?.



#include <stdio.h>
#include <math.h>
int main()
{
   int dia, mes, ano;
   char div = '\0';
   printf("Ingrese una fecha en el sig formato dd/mm/aaaa (ejemplo: 21/01/1989)\n");
   scanf("%d%c%d%c%d",&dia, &div, &mes, &div, &ano);
   fflush(stdin);
   printf("El año es %d\n",ano);
   printf("El dia es %d\n",dia);
   printf("El mes es %d\n",mes);
   getchar();
   return 0;
}



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



#include <stdio.h>
#include <math.h>
int main(){
    int mes,fecha,dia, ano;
    printf("Ingrese una fecha en el sig formato dd/mm/aa sin los / \n");
    scanf(" %d",&fecha);
    fflush(stdin);
    dia = (fecha / 10000);
    mes = (fecha - (dia * 10000)) / 100;
    ano = fecha - (dia * 10000) - (mes * 100);
    printf("El año es %d\n",ano);
    printf("El dia es %d\n",dia);
    printf("El mes es %d\n",mes);
    getchar();
    return 0;
}



Dulces Lunas!¡.
The Dark Shadow is my passion.

do-while

¡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.
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

rir3760

Cita de: BlackZeroX (Astaroth) en 27 Agosto 2012, 09:10 AM¿Te sirve?.

char div = '\0';
printf("Ingrese una fecha en el sig formato dd/mm/aaaa (ejemplo: 21/01/1989)\n");
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:
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:
scanf("%d/%d/%d",&dia, &mes, &ano);

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

SonaArtica


Cita de: BlackZeroX (Astaroth) en 27 Agosto 2012, 09:10 AM
¿Te sirve?.



#include <stdio.h>
#include <math.h>
int main()
{
   int dia, mes, ano;
   char div = '\0';
   printf("Ingrese una fecha en el sig formato dd/mm/aaaa (ejemplo: 21/01/1989)\n");
   scanf("%d%c%d%c%d",&dia, &div, &mes, &div, &ano);
   fflush(stdin);
   printf("El año es %d\n",ano);
   printf("El dia es %d\n",dia);
   printf("El mes es %d\n",mes);
   getchar();
   return 0;
}



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



#include <stdio.h>
#include <math.h>
int main(){
    int mes,fecha,dia, ano;
    printf("Ingrese una fecha en el sig formato dd/mm/aa sin los / \n");
    scanf(" %d",&fecha);
    fflush(stdin);
    dia = (fecha / 10000);
    mes = (fecha - (dia * 10000)) / 100;
    ano = fecha - (dia * 10000) - (mes * 100);
    printf("El año es %d\n",ano);
    printf("El dia es %d\n",dia);
    printf("El mes es %d\n",mes);
    getchar();
    return 0;
}



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  ;-)
<z

SonaArtica

Cita de: rir3760 en 27 Agosto 2012, 14:57 PM
* Si se desea que el carácter separador sea si o si el '/' se puede indicar directamente:
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
<z