[ Foro de Pascal ]
cordial saludo para todos.
queria pedir su ayuda en cuanto aun problema que tengo referente a lo siguiente:
tengo la siguiente definicion de estructura:
type
tdias=28..31;
tfecha=record
dia:integer;
mes:integer;
anno:1900..3000;
end;
var
archivoE:file of tfecha;
fechaE:tfecha;
dias_en_mes:tdias;
necesito hacer una funcion para saber si un año que se pasa como parametro es o no bisiesto, para en base a ello pueda definir los dias del mes de febrero 28 0 29 segun sea no bisiesto o sea bisiesto.
mi problema esta en como pasar el parametro para el año, yo intento lo siguiente:
function esBisiesto(fechaE.anno: integer): boolean;
Begin
if((fechaE.anno mod 4 = 0) and (fechaE.anno mod 100 <>0)) or(fechaE.anno mod 400 = 0) then
esBisiesto:= true
else
esBisiesto:= false;
End;
...
case fechaE.mes of
2:if esBisiesto(fechaE.anno) then
dias_en_mes:=29
else
dias_en_mes:=28;
end;
como puedo pasar correctamente el parametro para el año.?
he intentado hacer tambien:
function esBisiesto(fanno: integer): boolean;
Begin
if((fechaE.anno mod 4 = 0) and (fechaE.anno mod 100 <>0)) or(fechaE.anno mod 400 = 0) then
esBisiesto:= true
else
esBisiesto:= false;
End;
y no me da error, y me compila, pero no se si es correcto hacerlo, me gustaria saber su opinion si estoy errado o es ok , o alguna otra idea seria de gran ayuda.mil gracias.
Esto está casi bien, pero sólo casi:
function esBisiesto(fanno: integer): boolean;
Begin
if((fechaE.anno mod 4 = 0)
and (fechaE.anno mod 100 <>0))
or(fechaE.anno mod 400 = 0) then
esBisiesto:= true
else
esBisiesto:= false;
End;
pero en los parámetros hablas de una variable "fanno" y dentro de la función hablas de otra distinta, que es un campo de un struct: "fechaE.anno". Si uniformizas eso, debería funcionar:
function esBisiesto(a: integer): boolean;
Begin
if((a mod 4 = 0)
and (a mod 100 <>0))
or (a mod 400 = 0) then
esBisiesto:= true
else
esBisiesto:= false;
End;
cordial saludo profesor Nacho cabanes y gracias por responderme.
efectivamente como tu dices cometi un error pero creeme fue mas de observacion al enviartelo que de haberlo hecho asi, solo que copie el primer fragmento y lo copie haciendo el cambio en el parametro y no me fije de haberlo modificado dentro de la funcion , pero que solo fue error de apreciacion mas no de concepto por que esa parte la tengo clara de saber que como parametro si utilizo un nombre de variable, dentro de la funcion debo utilizar el mismo nombre, la verdad no me fije,,
sin embargo con tu respuesta se que entonces mi solucion era correcta, pues a pesar de que me funciona corractamente en el programa que utiliza esta funcion, no tenia la certeza de si lo que hacia estaba correcto, pero ahora se que si lo es, gracias a ti.
de igual manera aprovecho para comentarte lo referente a : el otro que has consultado de los valores cero... ;-)
pues de igual manera me funciona ok al ejecutar el programa que utiliza el procedimiento pero alli insisto me queda la duda de si es correcto hacer el if ( especificamente con el and para las condiciones de salida del repeat -- until) que precede al until, es realmente mi duda o si hay otra forma mejor de hacerlo, mil gracias por tu ayuda y por tu tiempo, de igual manera por tu paciencia.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)