Pascal/Turbo Pascal - Indicar si es una fecha válida o no

 
Vista:
sin imagen de perfil

Indicar si es una fecha válida o no

Publicado por Luis (14 intervenciones) el 28/06/2015 05:36:16
me podrian dar una idea de como hacer este programa porfavor

Desarrolle una función llamada esFechaValida que reciba tres enteros correspondientes a un día, mes y año y retorne un booleano que indique si es una fecha válida o no. Debe tomar en cuenta el día 29 de febrero para los años bisiestos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Indicar si es una fecha válida o no

Publicado por David (224 intervenciones) el 28/06/2015 11:51:53
Aquí la función. Dejo para ti la codificación del programa principal

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
Uses CRT;
 
Const
  DIASMES : ARRAY [1..12] of integer = (31,28,31,30,31,30,31,31,30,31,30,31);
 
VAR
  DIA,MES,ANIO:WORD;
   bisiesto:boolean;
 
Function FechaErronea(DIA:WORD;MES:WORD;ANIO:WORD):BOOLEAN;
 
var
  bisiesto:boolean;
 
BEGIN
  fechaerronea:=false;
 
  bisiesto:=false;
  if not (MES IN [1..12]) THEN
    fechaerronea:=true;
  if ((((anio mod 100) <>0) and ((anio mod 4)=0)) or ((anio mod 400)=0)) then
    bisiesto:=true;
  if bisiesto=true then
    diasmes[2]:=29;
  if not (DIA in [1..diasmes[mes]]) then
    fechaerronea:=true;
 
END.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Indicar si es una fecha válida o no

Publicado por ramon (2158 intervenciones) el 30/06/2015 22:28:25
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
{Espero esto te ayude}
 
 program fechareal;
 uses
    crt;
 
   var
     sm, dia, mes, ayo : word;
 
 
 
 
  procedure entradafecha(var za, zm, zd : word);
  begin
     clrscr;
     writeln('    Entre Dia/Mes/A¤o ');
     writeln;
     write('   Dia = ');readln(zd);
     write('   Mes = ');readln(zm);
     write('   A¤o = ');readln(za);
  end;
 
  function bisiesto(ay : word) : boolean;
  var
     bb, bx, by : real;
  begin
     bx := frac(ay/4);
     by := frac(ay/100);
     bb := frac(ay/400);
     if ((bx = 0) and (by > 0)) or ((bx = 0) and (bb = 0)) then
     bisiesto := true
   else
     bisiesto := false;
  end;
 
  function fecha_valida : boolean;
  begin
     fecha_valida := false;
     if (dia < 1) or (dia > 31) or (mes < 1) or (mes > 12) then
     begin
        writeln('   Error De Dato Entrado');
     end
  else
     begin
        case mes of
   1,3,5,7,8,10,12 : if (dia > 1) and (dia < 32) then
                      fecha_valida := true;
   4,6,9,11 : if (dia > 1) and (dia < 31) then
              fecha_valida := true;
   2 : begin
          if (bisiesto(ayo) = true) and ((dia > 1) and (dia < 29)) then
          fecha_valida := true
       else
          if (dia > 1) and (dia < 30) then
          fecha_valida := true;
       end;
      end;
     end;
  end;
 
 
 
 
  begin
     clrscr;
     entradafecha(ayo,mes,dia);
     clrscr;
     writeln('   La Fecha Entrada Es = ',fecha_valida);
     writeln('   ',dia,'/',mes,'/',ayo);
     readkey;
  end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar