Saber si un número es PAR o IMPAR

3,980 views
Skip to first unread message

Gerardo

unread,
Mar 21, 2009, 12:18:46 PM3/21/09
to Mundo Visual FoxPro
hola colegas.....

en VFP8.. ¿existe alguna función para saber si un número es PAR o
IMPAR?

Gracias,
Gerardo.

Trento

unread,
Mar 21, 2009, 2:08:35 PM3/21/09
to Mundo Visual FoxPro
MOD( nDividendo, nDivisor )

? MOD( 33, 2 ) && Regresa 1. No es número par

? MOD(32, 2) && Regresa 0. Es número par


Ejemplo:

lnNumero = 33
IF MOD( lnNumero, 2) # 0

MessageBox( TRANSFORM( lnNumero) + " no es número par.")
ELSE

MessageBox( TRANSFORM( lnNumero) + " es número par.")
ENDIF

O bien

lnNumero = 33
MESSAGEBOX( TRANSFORM( lnNumero) + IIF( MOD( lnNumero, 2) # 0, " " no
es número par.", " es número par.")


Saludos

di por favor, luego gracias

unread,
Mar 22, 2009, 2:03:03 PM3/22/09
to Mundo Visual FoxPro
hay una comillas de mas y falta un parentesis

MESSAGEBOX(TRANSFORM(lnNumero) + IIF(MOD(lnNumero,2)#0, " no es número
par.", " es número par."))

alex mamamaam

unread,
Mar 23, 2009, 1:16:02 AM3/23/09
to mundovis...@googlegroups.com
NO seas malo pe tampoco tampoco crear tu propia funcion 
f_es_par(Numero) y mete el codigo q señalaron.

no hya q ser perezosos y codificar un poco q todo no lo va hacer el lenguaje

Christian López Gómez

unread,
Mar 23, 2009, 1:51:35 AM3/23/09
to mundovis...@googlegroups.com
*!*    --------------------------------------------------------------------------
*!*    Funcion Devuelve Veraddero si es Numero Par
*!*    --------------------------------------------------------------------------
Function numparsn(var1)
PRIVATE si
si=.F.
si=IIF(MOD(var1,2)=0,.T.,.F.)
Return(si)


prueba esta funcion y me dices
--
Atentamente.
Ing. Christian López Gómez
Jefe de Sistemas
MSN:   christi...@hotmail.com
          christi...@gmail.com

Depto. Sistemas
P.D. "Un buen programador nunca muere solo se pierde en un proceso"

Rolando Oncoy Mendoza

unread,
Mar 24, 2009, 11:42:25 PM3/24/09
to mundovis...@googlegroups.com
IF MOD(X,2) = 0
    WAIT WIND STR(X)+"ES PAR"
ELSE
    WAIT WIND STR(X)+"ES IMPAR"
ENDIF


Rolando



 

Date: Mon, 23 Mar 2009 00:16:02 -0500
Subject: [Mundo Visual FoxPro] Re: Saber si un número es PAR o IMPAR
From: afman...@gmail.com
To: mundovis...@googlegroups.com

3rn3st0

unread,
Mar 25, 2009, 11:43:53 AM3/25/09
to Mundo Visual FoxPro
Una función como esta te servirá:

FUNCTION EsPar( nVal ) As Boolean
RETURN( IIF( MOD( nVal, 2 ) == 0, .T., .F. ) )

Con sólo dos líneas de código tienes tu problema resuelto. Espero te
sirva.

Julio Cesar Rodriguez Dominguez

unread,
Mar 25, 2009, 1:38:33 PM3/25/09
to mundovis...@googlegroups.com
El 25 de marzo de 2009 9:43, 3rn3st0 <ernest...@gmail.com> escribió:

Una función como esta te servirá:

FUNCTION EsPar( nVal ) As Boolean
RETURN( IIF( MOD( nVal, 2 ) == 0, .T., .F. ) )

Que curioso que ya van varias respuestas y cada vez se trata de mejora el código, que asi fuera para todas las preguntas,
aprenderiamos más. Falta ver si Gerardo uso alguna solución, y que para la proxima investigue un poquito más, ya que
no es algo dificil.

Bueno siguiendo con la tradición de mejorar el código en este thread, dejo mi parte. :-)

FUNCTION EsPar( numero)
RETURN  MOD(numero,2)=0

Saludos.

3rn3st0

unread,
Mar 25, 2009, 2:32:10 PM3/25/09
to Mundo Visual FoxPro
xD

No podía ser mejor, esa creo que es la manera más simple de construir
la función.

Ahora bien, a modo de consejo para Gerardo, simplificar el código de
esa manera no siempre es bueno. No porque esté malo el código ni nada
por el estilo, sino por el trabajo de depuración que siempre está
presente en un desarrollo. Por otra parte, si haces la pregunta que
hiciste es porque tu experiencia es poca, lo cual indica que te
resultaría más difícil encontrar algún error en el código.

Mi consejo es que tomes la función de Christian López, haciéndole un
sólo cambio, la declaración de la variable "si" cámbiala de PRIVATE a
LOCAL. Esa variable no tiene porque ser visible en todo el código de
tu programa, sólo debe ser visible dentro de la propia función.

Saludos a todos y, Julio César gracias por recordarme que VFP hace una
evaluación de cualquier código que pueda generar un resultado
lógico :-)

On 25 mar, 13:38, Julio Cesar Rodriguez Dominguez <jura...@gmail.com>
wrote:

di por favor, luego gracias

unread,
Mar 26, 2009, 6:56:16 PM3/26/09
to Mundo Visual FoxPro
un hombre con buena vista a la hora pico en una ciudad es atropellada,
y ahora para un ciego, como lo sera, cerra los hojos un dia y sali a
la calle, conm los ojos cerrados y luego siempre cerrados los ojos
volve a tu casa, comprenderas, que el que pregunta es porque no sabe

alex mamamaam

unread,
Apr 9, 2009, 6:36:03 PM4/9/09
to mundovis...@googlegroups.com
una pequeña correcion a esta funcion
por tema de performance no se debe de retornar un string o char
deberia ser entero o boolean segun los estandares de programacion

Ricardo Natella

unread,
Apr 15, 2009, 1:58:04 PM4/15/09
to mundovis...@googlegroups.com

Una Aclaración estimado Alex.

Si bien el nombre de la variable es “si” y se confunde con el resultado, el contenido de la variable “si” es verdadero o falso, según los estandares, tal como indicas en tu apreciación.

 

 


Carlos Miguel FARIAS

unread,
Apr 16, 2009, 8:30:34 AM4/16/09
to mundovis...@googlegroups.com
Estimados.
Si lo que realmente se necesita es velocidad, el uso de una variable private es lento (private debe buscar en la tabla de variables, para "ocultar" las referencias superiores).
Al menos habria que usar una variable local.
Es mas no habria que usar variables locales, con un simple

*!*    --------------------------------------------------------------------------
*!*    Funcion Devuelve Veraddero si es Numero Par
*!*    --------------------------------------------------------------------------
Function numparsn(var1)
return ( MOD(var1,2)=0 )
estaria resuelta la pregunta del numero par.
No tiene sentido usar la función iif() para preguntar que si la expresión evaluada da verdadero, devuelva verdadero, y que en caso contrario (da falso) falso (es como traducir del castellano al castellano).
Y aunque en muchos lenguajes, un valor cero representa falso y cualquier otra cosa es verdadero), como estamos usando fox debemos manejarnos con valores verdaderos o falsos, pero esto último es una sutiliza.
Saludos: Miguel

alex mamamaam

unread,
Apr 25, 2009, 10:28:53 PM4/25/09
to mundovis...@googlegroups.com
doctor ve los comentarios de
Carlos Miguel FARIA
dio en el clavo esa es la forma como deberiamos de programar
return 0/1 o false/true para q sea mas entendible

ahora pq digo esto si fuece el caso de 100,000 registros en los cuales voy a usar la funcion
definitivamente debe tener la menor cantidad de codigo y ser muy afinada la funcion
para q el proceso sea mas rapido si es solo son 1 registro la verdad no importa
como hagas tu script pero por cuestiones de no mal acostumbrase es mejor
pensar q siempre en una funcion optimizada
Reply all
Reply to author
Forward
0 new messages