C/Visual C - calendario perpetuo

 
Vista:

calendario perpetuo

Publicado por DReaM_h2o (4 intervenciones) el 01/12/2006 18:10:21
Buenas, estoy en grado superior de D (esarrollo de) A(plicaciones) I(nformáticas), es mi primer año y hemos empezado programando con c++.

Bién, el caso es que necesitamos realizar para navidades el proyecto de un calendario que al meterle la fecha te saque un calendario con el dia elegido remarcado, el dia y mes escrito en letras y el año en númeor romanos.

El tema de los números romanos, controlado. El de escribir el dia y mes en letras, facil. Pero lo que mas tenemos que investigar es el hecho de saber como "relacionar" el dia insertado en un dia de la semana. Es decir, que si yo inserto "01/12/2007" el programa sepa que ese dia es "Viernes". Y llamar a dicha funcion tambien para comprobar que dia de la semana es el dia 1 del mes, para tomarlo como relacion.

El profesor nos comento que existe una fórmla que al llamarla te da ya el valor y se podia incluir si la encontrabamos, por eso avudo a este gran foro. xDD Peloteo.

Nas, ayuda por favor:

salu2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:calendario perpetuo

Publicado por Carlos (3 intervenciones) el 04/12/2006 20:38:01
Bueno yo estoy estudiando el otro grado superior de informatica, el A.S.I. en segundo curso.
El año pasado estubimos con C y también nos mandaron eso para navidad, es un ejercicio típico xD.
Nosotros también tubimos que buscar la fórmula, ya nos dijo que la buscáramos, a no ser que fuesemos unos craks y la sacáramos nosotros mismos jaja.

Bueno yo usé lo siguiente:

Primero pido al usuario el dia, mes y año. Hazlo como quieras, pero para poder usar la fórmula tienes que tener el dia, el mes y el año en 3 variables del tipo "int".
(yo las llamé "dia","mes" y "year".

Aparte de estas, crea 3 variables auxiliares. Yo las llamé "d","m" y "y".

Entonces haz las siguientes operaciones:

if(mes<3){
y=(year-1)%100;
d=(year-1)/100;
m=mes+10;
}
else {
y=year%100;
d=year/100;
m=mes-2;
}

Y seguidamente puedes usar la famosilla fórmula, que traducida al C es asi:

diasemana=(dia+(int)(2.6*m-0.2) -2*d +y +y/4 +d/4) %7;
if (diasemana<0) diasemana+=7;

"diasemana" es una variable del tipo int también. No te olvides de copiar tambien el "If" que viene después, sino no funcionará bien.

Bueno el funcionamiento es sencillo, esto te devolverá un valor entre 0 y 6, que corresponden a los dias de la semana, en orden, pero ojo! Que el dia 0 no es el Lunes, sino el Domingo. O sea:
0 = Domingo
1 = Lunes
2 = Martes
3 = Miércoles
etc...

Espero que te sirva de algo, un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:calendario perpetuo

Publicado por DREaM_H2o (4 intervenciones) el 05/12/2006 03:24:50
muchas gracias, tengo todo preparado y solo es insertar la formula en el algoritmo. Como ves son las 3 de la mañana y no me apetece nada, pero en cuanto lo haga te comento el resultado.

Gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:calendario perpetuo

Publicado por DReaM_h2o (4 intervenciones) el 06/12/2006 16:47:44
¡EUREKA! la formula funciona, es justamente lo que esperaba de ella. xD muchisimas gracias por tu colaboracion, te devo una!!!. xDD

salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar