programa que lea una fecha con el formato dd mm aaaa y determine si la fecha es correcta
Publicado por Lucia (1 intervención) el 18/10/2019 19:11:36
Hola chicos. He estado los ultimos dias con este ejercicio de pascal pero no se que hacer mas para que me funcione.
Trata sobre un programa que lea una fecha con el formato dd mm aaaa y determine si la fecha es correcta. Un año es bisiesto si es divisible por 4 y no termina en dos ceros. Si termina en dos ceros, para que sea bisiesto debe ser divisible por 400. Tambien te pide que se descomponga en subprogramas, tal como:
- Lectura de los datos en el formato especificado.
- Comprobación de si el año es bisiesto. La cabecera puede ser:
function bisiesto (anno:integer):boolean;
- Cálculo de los días del mes según el año sea o no bisiesto.
function Numerodias (anno, mes:integer):integer;
De momento llevo esto. Si alguien me pudiera decir que estoy haciendo mal, lo agradeceria muchisimo
Trata sobre un programa que lea una fecha con el formato dd mm aaaa y determine si la fecha es correcta. Un año es bisiesto si es divisible por 4 y no termina en dos ceros. Si termina en dos ceros, para que sea bisiesto debe ser divisible por 400. Tambien te pide que se descomponga en subprogramas, tal como:
- Lectura de los datos en el formato especificado.
- Comprobación de si el año es bisiesto. La cabecera puede ser:
function bisiesto (anno:integer):boolean;
- Cálculo de los días del mes según el año sea o no bisiesto.
function Numerodias (anno, mes:integer):integer;
De momento llevo esto. Si alguien me pudiera decir que estoy haciendo mal, lo agradeceria muchisimo
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
60
61
62
63
64
65
66
67
68
69
70
71
program fechas;
var dia, mes, anyo: integer;
procedure leerdatos(dia, mes, anyo: integer);
begin
writeln('Va a escribir una fecha en formato dd mm aaaa');
writeln('Escriba una fecha en formato dia');
readln(dia);
writeln('Escriba una fecha en formato mes');
readln(mes);
writeln('Escriba una fecha en formato anyo');
readln(anyo);
IF (dia > 31) or (dia < 1) then
writeln('Error. Introduzca otra fecha');
IF (mes > 12) or (mes < 1) then
writeln('Error. Introduzca otra fecha');
IF (anyo > 2020) or (anyo < 1) then
writeln('Error. Introduzca otra fecha');
readln;
end;
function bisiesto (anyo:integer):boolean;
begin
if (((anyo mod 4) = 0) and ((anyo mod 100) <> 0)) and ((anyo mod 400) = 0) then
bisiesto:= TRUE {es bisiesto}
else
bisiesto:= FALSE; {no es bisiesto}
end;
function numerodias (mes, anyo:integer):integer;
begin
while (mes = 1) or (mes = 3) or (mes = 5) or (mes = 7) or (mes=8) or (mes = 10) or (mes = 12) do
begin
if (dia > 31) then
writeln('Error. Introduzca otra fecha')
else readln(dia);
numerodias:= dia
end;
while (mes = 4) or (mes = 6) or (mes = 9) or (mes = 11) do
begin
if (dia > 30) then
writeln('Error. Introduzca otra fecha')
else readln(dia);
numerodias:= dia
end;
while (mes = 2) do
if (((anyo mod 4) = 0) and ((anyo mod 100) <> 0)) and ((anyo mod 400) = 0) then
begin
if (dia > 29) then
writeln('Error. Introduzca otra fecha')
else readln(dia);
numerodias:= dia
end
else
begin
if (dia > 28) then
writeln('Error. Introduzca otra fecha')
else readln(dia);
numerodias:= dia
end;
end;
begin {programa principal}
leerdatos(dia, mes, anyo);
bisiesto(anyo);
Numerodias(mes, anyo);
writeln('La fecha ', dia, mes, anyo, 'es correcta');
readln;
end.
Valora esta pregunta


0