P__9_E28

=__**Leer una fecha y calcular día de la semana que corresponde**__= > Escribir un programa que lea desde teclado una fecha (día y mes) y > calcule y escriba el número que representa el día de la semana > correspondiente a la fecha leída.

Supondremos que el 1 de Enero de ese año es lunes, y que todos los meses de tienen 30 días
code format="pascal" PROGRAM P__9E28 ; VAR iDia, iMes, iDiasPasados, iDiaSemana : Integer ; BEGIN Writeln ; WriteLn ('Suponiendo que todos los meses tienen 30 dias') ; Writeln ; WriteLn ('        El 1 de Enero fue Lunes') ; Writeln ; WriteLn ('        0 es Lunes, 1 es Martes, ... 6 es Domiengo') ; Writeln ; WriteLn ('Escribe una fecha (dia y número del mes') ;   Write   ('  Día: ') ;    Readln  (iDia) ;    Write   ('  Mes: ') ;    Readln  (iMes) ;
 * NOTA**: El lunes se representará por el valor 0, el martes por el 1, el miércoles por el 2,... y el domingo por el valor 6.

iDiasPasados := (iMes - 1) * 30 + (iDia - 1);

iDiaSemana := iDiasPasados MOD 7 ;

Writeln ; Writeln ('El dia ', iDia, '/', iMes, ' es: ', iDiaSemana) ; Writeln ; Writeln ; Readln ; END. code


 * === Ahora el programa preguntará por el día de la semana del día 1 de Enero ===

code format="pascal" PROGRAM P__9E28B ; VAR iDiaSemana_1_Enero, iDia, iMes, iDiasPasados, iDiaSemana : Integer ; BEGIN Writeln ; WriteLn ('Suponiendo que todos los meses tienen 30 dias') ; Writeln ; Writeln ('Siendo 0 = Lunes, 1 = Martes, ... y 6 Domingo') ; Writeln ; Write  ('Escribe el ordinal de día de la semana del día 1 de Enero: ') ; ReadLN (iDiaSemana_1_Enero) ; Writeln ; Writeln ; WriteLn ('Escribe una fecha (dia y número del mes') ;   Write   ('  Día: ') ;    Readln  (iDia) ;    Write   ('  Mes: ') ;    Readln  (iMes) ;

iDiasPasados := (iMes - 1) * 30 + (iDia - 1);

iDiaSemana := (iDiaSemana_1_Enero + (iDiasPasados MOD 7)) MOD 7 ;

Writeln ; Writeln ('El dia ', iDia, '/', iMes, ' es: ', iDiaSemana) ; Readln ; END. code