Domingo 22 de Diciembre de 2024, 14:04
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Delphi
»
Dia De La Semana
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Dia De La Semana (Leído 6237 veces)
novato_1337
Nuevo Miembro
Mensajes: 12
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
Tweet
Enko
Miembro de PLATA
Mensajes: 1562
Nacionalidad:
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
if año mod 4 = 0 then AñoBiciesto;
if Dias mod 7 = 0 then Dia:=Domingo; (no estoy seguro, creo, podr'ia ser Lunes)
if dias mod 7 = 1 then Dia := Lunes; (lo mismo que antes, pero ahora ser'ia Martes)
novato_1337
Nuevo Miembro
Mensajes: 12
Re: Dia De La Semana
«
Respuesta #2 en:
Martes 7 de Marzo de 2006, 04:39 »
0
Gracias me sirvio de mucho tu ayuda
muchas gracias encerio
novato_1337
Nuevo Miembro
Mensajes: 12
Re: Dia De La Semana
«
Respuesta #3 en:
Miércoles 8 de Marzo de 2006, 05:04 »
0
ya tengo todo programado
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:
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
Han pasado 16 - 5 = 11 dias.
11 mod 7 = 4.
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
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
Re: Dia De La Semana
«
Respuesta #6 en:
Miércoles 8 de Marzo de 2006, 23:48 »
0
Código: Text
const
enero=31; marzo=31;abril=30;mayo=31;junio=30;
julio=31; agosto=31; septiembre=30;
octubre=31;noviembre=30;diciembre=31;
var
dia,mes,anio,b, febrero,dias,resto,inicio:integer;
begin
b:=1;
clrscr;
writeln('Ingrese Fecha DD-MM-AAAA');
repeat
Writeln('Ingrese dias DD');
readln(dia);
if dia >31 then
begin
writeln('error los dias no pueden ser mas de 31');
b:=0;
end
else
b:=1;
until b=1;
repeat
writeln('Ingrese Mes MM');
readln(mes);
if mes >12 then
begin
writeln ('Error no existen mas de 12 meses');
b:=0;
end
else
b:=1;
until b=1;
writeln('Ingrese Anio AAAA');
readln(anio);
clrscr;
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');
readln(inicio);
if (anio mod 100=0) and (anio mod 400 <> 0) then
febrero:=28;
if (anio mod 4) =0 then
febrero:=29
else
begin
febrero:=28;
end;
if mes =12 then
dias:=enero+febrero+marzo+abril+mayo+junio+julio+agosto+septiembre+octubre+noviembre+dia;
if mes =11 then
dias:=enero+febrero+marzo+abril+mayo+junio+julio+agosto+septiembre+octubre+dia;
if mes=10 then
dias:=enero+febrero+marzo+abril+mayo+junio+julio+agosto+septiembre+dia;
if mes=09 then
dias:=enero+febrero+marzo+abril+mayo+junio+julio+agosto+dia;
if mes=08 then
dias:=enero+febrero+marzo+abril+mayo+junio+julio+dia;
if mes=07 then
dias:=enero+febrero+marzo+abril+mayo+junio+dia;
if mes=06 then
dias:=enero+febrero+marzo+abril+mayo+dia;
if mes=05 then
dias:=enero+febrero+marzo+abril+dia;
if mes=04 then
dias:=enero+febrero+marzo+dia;
if mes=03 then
dias:=enero+febrero+dia;
if mes=02 then
dias:=enero+dia;
if mes=01 then
dias:=dia;
resto:=(dias)mod 7;
if resto = 0 then
writeln('dia es Sabadoo');
if resto=1 then
writeln('dia es Domingo');
if resto=2 then
writeln('dia es Lunes');
if resto=3 then
writeln('dia es Martes');
if resto=4 then
writeln('dia es Miercoles');
if resto=5 then
writeln('dia es Viernes');
readln;
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
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
Re: Dia De La Semana
«
Respuesta #8 en:
Jueves 9 de Marzo de 2006, 00:23 »
0
Código: Text
uses
SysUtils,
crt32;
const
enero=31; marzo=31;abril=30;mayo=31;junio=30;
julio=31; agosto=31; septiembre=30;
octubre=31;noviembre=30;diciembre=31;
var
dia,mes,anio,b,febrero,dias,resto,inicio:integer;
begin
febrero:=0;
b:=1;
clrscr;
writeln('Ingrese Fecha DD-MM-AAAA');
repeat
Writeln('Ingrese dias DD');
readln(dia);
if dia >31 then
begin
writeln('error los dias no pueden ser mas de 31');
b:=0;
end
else
b:=1;
until b=1;
repeat
writeln('Ingrese Mes MM');
readln(mes);
if mes >12 then
begin
writeln ('Error no existen mas de 12 meses');
b:=0;
end
else
b:=1;
until b=1;
writeln('Ingrese Anio AAAA');
readln(anio);
clrscr;
Writeln(' Ingrese dia de la semana que fue el primero de enero del anio');
Writeln(' Lunes:1,Martes:2,Miercoles:3,Jueves:4,Viernes:5,Sabado:6,Domingo:7 ');
readln(inicio);
if (anio mod 100=0) and (anio mod 400 <> 0) then
febrero:=28;
if (anio mod 4) =0 then
begin
febrero:=29;
end
else
begin
febrero:=28;
end;
if mes =12 then
dias:=enero+febrero+marzo+abril+mayo+junio+julio+agosto+septiembre+octubre+noviembre+dia;
if mes =11 then
dias:=enero+febrero+marzo+abril+mayo+junio+julio+agosto+septiembre+octubre+dia;
if mes=10 then
dias:=enero+febrero+marzo+abril+mayo+junio+julio+agosto+septiembre+dia;
if mes=09 then
dias:=enero+febrero+marzo+abril+mayo+junio+julio+agosto+dia;
if mes=08 then
dias:=enero+febrero+marzo+abril+mayo+junio+julio+dia;
if mes=07 then
dias:=enero+febrero+marzo+abril+mayo+junio+dia;
if mes=06 then
dias:=enero+febrero+marzo+abril+mayo+dia;
if mes=05 then
dias:=enero+febrero+marzo+abril+dia;
if mes=04 then
dias:=enero+febrero+marzo+dia;
if mes=03 then
dias:=enero+febrero+dia;
if mes=02 then
dias:=enero+dia;
if mes=01 then
dias:=dia;
resto:=(dias+inicio)mod 7;
if resto = 0 then
writeln(dia,'/', mes,'/',anio ,'El dia es Sabado');
if resto=1 then
writeln(dia,'/', mes,'/',anio ,'El dia es Domingo');
if resto=2 then
writeln(dia,'/', mes,'/',anio ,'El dia es Lunes');
if resto=3 then
writeln(dia,'/', mes,'/',anio,' El dia es Martes');
if resto=4 then
writeln(dia,'/', mes,'/',anio ,'El dia es Miercoles');
if resto=5 then
writeln(dia,'/', mes,'/',anio ,'El dia es Viernes');
readln;
end.
Asi es como me quedo mi porgrama ya terminado si tienes algun comentario o sugerencia bienvenido gracias por todo
Enko
Miembro de PLATA
Mensajes: 1562
Nacionalidad:
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
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
, 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
function bisiesto( year:integer ):boolean;
begin
if( year mod 4<>0 ) then
{ no es divisible por 4, luego no es bisiesto }
Result := false;
else if( year mod 100<>0 ) then
{ no es divisible por 100, luego si es bisiesto }
Result := true;
else if( year mod 400=0 ) then
{ es divisible por 100 y por 400, luego si es bisiesto }
Result := true
else
{ en cualquier otro caso no es bisiesto }
Result := false
end;
Saludos
salvica
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Delphi
»
Dia De La Semana