]> git.llucax.com Git - z.facultad/75.40/1er-cuat/material.git/blob - fechas(2.31).pas
Se expanden keywords del svn.
[z.facultad/75.40/1er-cuat/material.git] / fechas(2.31).pas
1 (*\r
2  * Programa que consiste en dos funciones, la primera devuelve,\r
3  * a partir de un mes y un a¤o v lido, el numero de dias que tiene\r
4  * dicho mes. La segunda, a partir de un dia, un mes y un anio, da\r
5  * el numero de dias que tiene un mes y retorna 0 si la fecha es\r
6  * invalida. El programa en s¡, toma una fecha y devuelve el dia\r
7  * siguiente. Si la fecha ingresada es invalida, avisa al usuario\r
8  * y sale.\r
9  *\r
10  *)\r
11 \r
12 PROGRAM Fechas;\r
13 \r
14 VAR\r
15    dia, mes, anio, dias: integer;\r
16 \r
17 FUNCTION maxDias(mes, anio: integer): integer;\r
18 \r
19         BEGIN\r
20              CASE mes OF\r
21                   2: IF ((anio MOD 4 = 0) AND (anio MOD 100 <> 0)) OR (anio MOD 400 = 0)\r
22                         THEN maxDias := 29\r
23                         ELSE maxDias := 28;\r
24                   4, 6, 9, 11: maxDias := 30;\r
25                   ELSE maxDias := 31;\r
26              END;\r
27         END;\r
28 \r
29 FUNCTION maxDiasValido(dia, mes, anio: integer): integer;\r
30 \r
31         VAR\r
32            max: integer;\r
33 \r
34         BEGIN\r
35              IF (anio > 2100) OR (anio < 1900)\r
36                 THEN maxDiasValido := 0\r
37                 ELSE IF (mes > 12) OR (mes < 1)\r
38                         THEN maxDiasValido := 0\r
39                         ELSE BEGIN\r
40                                   max := maxDias(mes, anio);\r
41                                   IF (dia > max) OR (dia < 1)\r
42                                      THEN maxDiasValido := 0\r
43                                      ELSE maxDiasValido := max;\r
44                              END;\r
45         END;\r
46 \r
47 BEGIN\r
48      write('Escriba el dia: ');\r
49      readln(dia);\r
50      write('Escriba el mes: ');\r
51      readln(mes);\r
52      write('Escriba el aÏo: ');\r
53      readln(anio);\r
54      dias := maxDiasValido(dia, mes, anio);\r
55      IF dias = 0\r
56         THEN writeln('La fecha que ingres½ no es vÿlida. Pruebe otra vez...')\r
57         ELSE BEGIN\r
58                   IF dia < dias\r
59                      THEN dia := dia + 1\r
60                      ELSE BEGIN\r
61                                dia := 1;\r
62                                IF mes = 12\r
63                                   THEN BEGIN\r
64                                             anio := anio + 1;\r
65                                             mes := 1;\r
66                                        END\r
67                                   ELSE mes := mes + 1;\r
68                           END;\r
69                   writeln('El d­a siguiente es el ', dia: 2, '-', mes: 2, '-', anio: 4, '.');\r
70              END;\r
71 END.\r