• Domingo 22 de Diciembre de 2024, 14:04

Autor Tema:  Dia De La Semana  (Leído 6237 veces)

novato_1337

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Dia De La Semana
« en: Lunes 6 de Marzo de 2006, 04:33 »
0
hola queria saber si alguien me podia ayuda con el siguiente programa dandome ideas gracias ;) : El usuario deberá ingresar una fecha en el formato DD-MM-AAAA y el día de la semana que fue el primero de enero de dicho año (este ingreso deberá ser un caracter así: l = lunes, m = martes, i = miércoles, j = jueves, v = viernes, s = sábado, d = domingo).  Su programa le deberá mostrar al usuario el día de la semana que corresponde a la fecha que ha ingresado.  Debo tomar en cuenta los años bisiestos

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Dia De La Semana
« Respuesta #1 en: Martes 7 de Marzo de 2006, 03:20 »
0
*Primero hace una rutina que te indique si el año es bisiesto ( año mod 4 = 0)
*Hacer una tabla que te indique los días que tienen cada mes
*Calcular los días que pasaron desde el 1ro de enero hasta el día ingresado
*Dividir esa cantidad de dias por 7 y ver cuanto te da el resto.

Fijate que para sacar el resto podes usar el operador MOD
Código: Text
  1.  
  2.   if año mod 4 = 0 then AñoBiciesto;
  3.   if Dias mod 7 = 0 then Dia:=Domingo; (no estoy seguro, creo, podr'ia ser Lunes)
  4.   if dias mod 7 = 1 then Dia := Lunes; (lo mismo que antes, pero ahora ser'ia Martes)
  5.  
  6.  

novato_1337

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dia De La Semana
« Respuesta #2 en: Martes 7 de Marzo de 2006, 04:39 »
0
Gracias me sirvio de mucho tu ayuda :D muchas gracias encerio :D

novato_1337

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dia De La Semana
« Respuesta #3 en: Miércoles 8 de Marzo de 2006, 05:04 »
0
ya tengo todo programado  :comp:  para que me saque si es año bisiesto y para juntar todos los dias en uno pero no se si tendria que asignarle un valor a cada dia de la semana para realizar alguna operacion o como podria hacer para que me encuentre por ejemplo cayo lunes quizas debi especificar mas mi duda en realidad es como podria saber que dia es :(

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Dia De La Semana
« Respuesta #4 en: Miércoles 8 de Marzo de 2006, 17:11 »
0
Supongamso esto, el usuario ingresa:
Citar
14/01/06-------05/01/06
Esto debería decir que hoy es el 14 de enero del 2006 y que el primer lunes de este año fue el 5 de enero del mismo año. (no se si es así lo que buscas, pero sigo)

Tendrías que ahora calcular cuantos días han pasado desde el 5 de enero hasta el 16.
(Elegí el mismo mes para facilitar el calculo del ejemplo).
Código: Text
  1.  
  2. Han pasado 16 - 5 = 11 dias.
  3. 11 mod 7 = 4.
  4.  
  5.  
4, quiere decir que pasaron 4 días despues del lunes con no importa que cantidad de semanas de por medio. Eso serían 4  días despues del lunes.... VIERNES
Es decir, si hubieran pasado 125 días despues del primer lunes, el resto es 6, lo que te indica que pasaron en realidad muchas semanas, y en la última semana, 6 días despues del lunes por lo que sería Domingo.

novato_1337

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dia De La Semana
« Respuesta #5 en: Miércoles 8 de Marzo de 2006, 23:37 »
0
Citar
14/01/06-------05/01/06

la forma de ingresar el dia incial es solamente que dia de la semana era cuando empezo el año ej: lunes,martes,miercoles,etc

en este caso tendrias que ingresar la fecha 14/01/06 y Domingo y con estos datos calcular el dia de la semana del 14/01/06 esto es lo que no logro realizar.

Citar
if Dias mod 7 = 0 then Dia:=Domingo;

 ¿si hago mod 7 el total de dias pasados me tendria que dar el dia que es?, pero creo que tendria que asignar un numero a cada dia de la semana y sumarselo al total de dias de la fecha ingresada antes de hacer mod 7. :S

novato_1337

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dia De La Semana
« Respuesta #6 en: Miércoles 8 de Marzo de 2006, 23:48 »
0
Código: Text
  1. const
  2.   enero=31;  marzo=31;abril=30;mayo=31;junio=30;
  3.   julio=31; agosto=31; septiembre=30;
  4.   octubre=31;noviembre=30;diciembre=31;
  5. var
  6. dia,mes,anio,b, febrero,dias,resto,inicio:integer;
  7. begin
  8.   b:=1;
  9.   clrscr;
  10.   writeln('Ingrese Fecha DD-MM-AAAA');
  11.   repeat
  12.   Writeln('Ingrese dias DD');
  13.   readln(dia);
  14.   if dia >31 then
  15.   begin
  16.   writeln('error los dias no pueden ser mas de 31');
  17.   b:=0;
  18.   end
  19.   else
  20.   b:=1;
  21.   until b=1;
  22.   repeat
  23.   writeln('Ingrese Mes MM');
  24.   readln(mes);
  25.   if mes >12 then
  26.   begin
  27.   writeln ('Error no existen mas de 12 meses');
  28.   b:=0;
  29.   end
  30.   else
  31.   b:=1;
  32.   until b=1;
  33.   writeln('Ingrese Anio AAAA');
  34.   readln(anio);
  35.  
  36.   clrscr;
  37.   Writeln('Ingrese dia de la semana que fue el primero de enero del anio Lunes:1,Martes:2,Miercoles:3,Jueves:4,Viernes:5,Sabado:6,Domingo:7');
  38.   readln(inicio);
  39.  
  40.   if (anio mod 100=0) and (anio mod 400 <> 0) then
  41.   febrero:=28;
  42.   if (anio mod 4) =0 then
  43.   febrero:=29
  44.   else
  45.   begin
  46.   febrero:=28;
  47.   end;
  48.   if mes =12 then
  49.   dias:=enero+febrero+marzo+abril+mayo+junio+julio+agosto+septiembre+octubre+noviembre+dia;
  50.   if mes =11 then
  51.   dias:=enero+febrero+marzo+abril+mayo+junio+julio+agosto+septiembre+octubre+dia;
  52.   if mes=10 then
  53.   dias:=enero+febrero+marzo+abril+mayo+junio+julio+agosto+septiembre+dia;
  54.   if mes=09 then
  55.   dias:=enero+febrero+marzo+abril+mayo+junio+julio+agosto+dia;
  56.   if mes=08 then
  57.   dias:=enero+febrero+marzo+abril+mayo+junio+julio+dia;
  58.   if mes=07 then
  59.   dias:=enero+febrero+marzo+abril+mayo+junio+dia;
  60.   if mes=06 then
  61.   dias:=enero+febrero+marzo+abril+mayo+dia;
  62.   if mes=05 then
  63.   dias:=enero+febrero+marzo+abril+dia;
  64.   if mes=04 then
  65.   dias:=enero+febrero+marzo+dia;
  66.   if mes=03 then
  67.   dias:=enero+febrero+dia;
  68.   if mes=02 then
  69.   dias:=enero+dia;
  70.   if mes=01 then
  71.   dias:=dia;
  72.  
  73.  
  74.   resto:=(dias)mod 7;
  75.  
  76.   if resto  = 0 then
  77.   writeln('dia es Sabadoo');
  78.   if resto=1 then
  79.   writeln('dia es Domingo');
  80.   if resto=2 then
  81.   writeln('dia es Lunes');
  82.   if resto=3 then
  83.   writeln('dia es Martes');
  84.   if resto=4 then
  85.   writeln('dia es Miercoles');
  86.   if resto=5 then
  87.   writeln('dia es Viernes');
  88.  
  89.   readln;
  90.  

Esto es lo que programe yo solo el final donde dice que dia es si funciona pero lo hice probando diferentes combinaciones de resultados no con mucha seguridad es lo unico que me quedo duda.

novato_1337

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dia De La Semana
« Respuesta #7 en: Miércoles 8 de Marzo de 2006, 23:56 »
0
:( aun no corre el codigo anterior tiene errores tendre que revisarlo :(

novato_1337

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dia De La Semana
« Respuesta #8 en: Jueves 9 de Marzo de 2006, 00:23 »
0
Código: Text
  1. uses
  2.   SysUtils,
  3.   crt32;
  4.  
  5. const
  6.   enero=31;  marzo=31;abril=30;mayo=31;junio=30;
  7.   julio=31; agosto=31; septiembre=30;
  8.   octubre=31;noviembre=30;diciembre=31;
  9. var
  10. dia,mes,anio,b,febrero,dias,resto,inicio:integer;
  11. begin
  12.   febrero:=0;
  13.   b:=1;
  14.   clrscr;
  15.   writeln('Ingrese Fecha DD-MM-AAAA');
  16.   repeat
  17.   Writeln('Ingrese dias DD');
  18.   readln(dia);
  19.   if dia >31 then
  20.   begin
  21.   writeln('error los dias no pueden ser mas de 31');
  22.   b:=0;
  23.   end
  24.   else
  25.   b:=1;
  26.   until b=1;
  27.   repeat
  28.   writeln('Ingrese Mes MM');
  29.   readln(mes);
  30.   if mes >12 then
  31.   begin
  32.   writeln ('Error no existen mas de 12 meses');
  33.   b:=0;
  34.   end
  35.   else
  36.   b:=1;
  37.   until b=1;
  38.   writeln('Ingrese Anio AAAA');
  39.   readln(anio);
  40.  
  41.   clrscr;
  42.   Writeln('  Ingrese dia de la semana que fue el primero de enero del anio');
  43.   Writeln(' Lunes:1,Martes:2,Miercoles:3,Jueves:4,Viernes:5,Sabado:6,Domingo:7 ');
  44.   readln(inicio);
  45.  
  46.   if (anio mod 100=0) and (anio mod 400 <> 0) then
  47.   febrero:=28;
  48.   if (anio mod 4) =0 then
  49.   begin
  50.   febrero:=29;
  51.   end
  52.   else
  53.   begin
  54.   febrero:=28;
  55.   end;
  56.   if mes =12 then
  57.   dias:=enero+febrero+marzo+abril+mayo+junio+julio+agosto+septiembre+octubre+noviembre+dia;
  58.   if mes =11 then
  59.   dias:=enero+febrero+marzo+abril+mayo+junio+julio+agosto+septiembre+octubre+dia;
  60.   if mes=10 then
  61.   dias:=enero+febrero+marzo+abril+mayo+junio+julio+agosto+septiembre+dia;
  62.   if mes=09 then
  63.   dias:=enero+febrero+marzo+abril+mayo+junio+julio+agosto+dia;
  64.   if mes=08 then
  65.   dias:=enero+febrero+marzo+abril+mayo+junio+julio+dia;
  66.   if mes=07 then
  67.   dias:=enero+febrero+marzo+abril+mayo+junio+dia;
  68.   if mes=06 then
  69.   dias:=enero+febrero+marzo+abril+mayo+dia;
  70.   if mes=05 then
  71.   dias:=enero+febrero+marzo+abril+dia;
  72.   if mes=04 then
  73.   dias:=enero+febrero+marzo+dia;
  74.   if mes=03 then
  75.   dias:=enero+febrero+dia;
  76.   if mes=02 then
  77.   dias:=enero+dia;
  78.   if mes=01 then
  79.   dias:=dia;
  80.  
  81.  
  82.   resto:=(dias+inicio)mod 7;
  83.  
  84.   if resto  = 0 then
  85.   writeln(dia,'/', mes,'/',anio ,'El dia es Sabado');
  86.   if resto=1 then
  87.   writeln(dia,'/', mes,'/',anio ,'El dia es Domingo');
  88.   if resto=2 then
  89.   writeln(dia,'/', mes,'/',anio ,'El dia es Lunes');
  90.   if resto=3 then
  91.   writeln(dia,'/', mes,'/',anio,' El dia es Martes');
  92.   if resto=4 then
  93.   writeln(dia,'/', mes,'/',anio ,'El dia es Miercoles');
  94.   if resto=5 then
  95.   writeln(dia,'/', mes,'/',anio ,'El dia es Viernes');
  96.  
  97.   readln;
  98.  
  99.   end.
  100.  
Asi es como me quedo mi porgrama ya terminado si tienes algun comentario o sugerencia bienvenido gracias por todo

:hola:

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Dia De La Semana
« Respuesta #9 en: Jueves 9 de Marzo de 2006, 14:22 »
0
VAMOS DE VUELTA
Citar
14/01/06 y Domingo
Domingo quiere decir que el 1ro de Enero Fue Domingo NO?

Entonces, han pasado 14 días despues del 1ro de Enero.
Cada 7 dias se repite el día.
Eso quiera decir que el 14 mod 7 = 0,
(0-1)  sería Un día menso que domingo, Sabado

Vamso a algo más complicado,
Citar
15/02/06 Lunes
Quiere decir que el 1ro de Enero fue Lunes  y que la fecha es 15/02
Enero tiene 31, días.
31 + 15 = 46.
Eso quiere dicir que pasaron 46 días despues del 1ro de enero que fue un Lunes
46 mod 7 = 4.
(4 - 1 ) = 3 días pasaron despues del lunes. Seria Jueves

salvica

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
    • http://salvica.yi.org
Re: Dia De La Semana
« Respuesta #10 en: Viernes 14 de Abril de 2006, 19:16 »
0
Sobre lo de "bisiesto" os falta lo siguiente:

- Si año no es divisible por 4, NUNCA es bisiesto. (1991)

- Si año es divisible por 4, puede ser bisiesto, o no serlo  :whistling: , para ello debe cumplir:
- Si año no es divisible por 100, SIEMPRE es bisiesto (2004)
- Si año es divisible por 100, pero no es divisible por 400 NUNCA es bisiesto (3000)
- Si año es divisible por 100, y tambien es divisible por 400 SIEMPRE es bisiesto (2000)
Código: Text
  1.  
  2. function bisiesto( year:integer ):boolean;
  3. begin
  4.   if( year mod 4<>0 ) then
  5.     { no es divisible por 4, luego no es bisiesto }
  6.        Result := false;
  7.   else if( year mod 100<>0 ) then
  8.           { no es divisible por 100, luego si es bisiesto }
  9.              Result := true;
  10.          else if( year mod 400=0 ) then
  11.                  { es divisible por 100 y por 400, luego si es bisiesto }
  12.                     Result := true
  13.                 else
  14.                  { en cualquier otro caso no es bisiesto }
  15.                     Result := false
  16. end;
  17.  
  18.  
Saludos
salvica