• Lenguaje

    Pascal

  • Descripción

    Calcula la fecha del siguiente día a partir de una fecha digitada desde el teclado por el usuario (dd, mm, aaaa) e imprimirla. (Tenga en cuenta los años bisiestos.), recuerde que sólo debe ingresar valores correctos, es decir no pueden haber meses de más de 31 días o años con más de 12 meses, se debe garantizar que el año este en el rango de 4 cifras. (en caso de no cumplir con las condiciones se debe mostrar los mensaje de error).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
program DiaSiguiente;
uses crt;

var anno, anno_siguiente, dia, dia_siguiente, mes : integer;
var mes_siguiente : integer;
begin
    write ('Ingresa el valor de anno: ');
    readln (anno);
    write ('Ingresa el valor de dia: ');
    readln (dia);
    write ('Ingresa el valor de mes: ');
    readln (mes);
    if ((dia=30) and ((mes=4) or (mes=6) or (mes=9) or (mes=11))) or (dia=31) or ((mes=2) and ((dia=29) or ((dia=28) and ((anno mod 4<>0) or (anno mod 100=0)) and (anno mod 400<>0)))) then
        begin
            dia_siguiente := 1;
            mes_siguiente := mes+1;
        end
    else
        begin
            dia_siguiente := dia+1;
            mes_siguiente := mes;
        end;
    if mes_siguiente=13 then
        begin
            anno_siguiente := anno+1;
            mes_siguiente := 1;
        end
    else
        begin
            anno_siguiente := anno;
        end;
    if (dia<1) or (dia>31) or ((mes=2) and (dia>29)) or (((mes=4) or (mes=6) or (mes=9) or (mes=11)) and (dia=31)) or ((mes=2) and (dia=29) and ((anno mod 4<>0) or (anno mod 100=0)) and (anno mod 400<>0)) then
        begin
            dia_siguiente := 0;
            mes_siguiente := 0;
            anno_siguiente := 0;
            writeln ('D'#161'a incorrecto');
        end;
    if (mes<1) or (mes>12) then
        begin
            dia_siguiente := 0;
            mes_siguiente := 0;
            anno_siguiente := 0;
            writeln ('Mes incorrecto');
        end;
    if (anno<1000) or (anno>=10000) then
        begin
            dia_siguiente := 0;
            mes_siguiente := 0;
            anno_siguiente := 0;
            writeln ('A'#164'o incorrecto');
        end;
    writeln ('Valor de anno siguiente: ', anno_siguiente);
    writeln ('Valor de dia siguiente: ', dia_siguiente);
    writeln ('Valor de mes siguiente: ', mes_siguiente);
    writeln;
    write ('Presiona una tecla para terminar . . . ');
    readkey;
end.