Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-04-2010
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
como determinar si un numero es par o impar

Necesito determinar si un numero es par o impar. ?Me pueden orientar?
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #2  
Antiguo 05-04-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Usa la función Odd.

// Saludos
Responder Con Cita
  #3  
Antiguo 06-04-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Si el bit menos significativo es 1 entonces no es par:
Código:
bool par = !(n & 0x1);
Saludos.
Responder Con Cita
  #4  
Antiguo 06-04-2010
vinicc vinicc is offline
Miembro
 
Registrado: ago 2006
Posts: 31
Poder: 0
vinicc Va por buen camino
Cool pares y nones

Divides el número dentro de 2 y si el resultado tiene parte fraccionaria, entonces es impar, de lo contrario es par. También (en delphi) if ( x mod 2) = 0 then (es_Par)
Responder Con Cita
  #5  
Antiguo 06-04-2010
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola, tambien puedes usar el modulo 2

Código:
if (n%2) { cout << "impar" } else { cout << "par" }
Responder Con Cita
  #6  
Antiguo 07-04-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por escafandra Ver Mensaje
Si el bit menos significativo es 1 entonces no es par:
Código:
bool par = !(n & 0x1);
Saludos.
Épale... escafandra... buen truco.
gracias por compartirlo..
Una anécdota
>
Aún recuerdo aquella vez cuando estaba empezando a dar mis primeros pasos en la programación en la universidad, que a cierto catedrático se le ocurrío preguntarnos en el examen :¿Hacer una funcion que diga si un número es par pero sin usar division(div) ni residuo(mod) ni cualquier otra función propia del lenguaje?
Lo cierto es que no recuerdo si lo resolví pero con la respuesta de escafandra creo que hubiera sido mas fácil... ¿cómo no se me ocurrió...?.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 07-04-2010 a las 23:10:04.
Responder Con Cita
  #7  
Antiguo 07-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por rgstuamigo Ver Mensaje
[..]¿Hacer una funcion que diga si un número es par pero sin usar division(div) ni residuo(mod) ni cualquier otra función propia del lenguaje? [..]
Pero, ¿dijo qué lenguaje? jejeje
Responder Con Cita
  #8  
Antiguo 07-04-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pero, ¿dijo qué lenguaje? jejeje
Bueno aquella vez estabamos dando los primeros pininos en Pascal, aunque en realidad el examen era escrito y tenias que hacerlo usando Diagrama de flujo ó Pseudocódigo lo cual implica que la solucion serviría para cualquier lenguaje de programación.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #9  
Antiguo 07-04-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Todos los microprocesadores tienen un indicador de paridad. Entonces podría utilizarse código máquina:

Código Delphi [-]
{ Como no sepo 8x86, utilizo Z-80 :-P }
FUNCTION Par (aValue: INTEGER): BOOLEAN;
ASM
  POP BC
  POP HL
  LD IX, 0
  LD IY, 1
  LD A, L
  OR A
  JP P, SI
  PUSH IX
  JR FIN
SI:
  PUSH IY
FIN:
  PUSH BC
END;

Bueno, más o menos...
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 07-04-2010 a las 13:06:18.
Responder Con Cita
  #10  
Antiguo 07-04-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
El z-80, qué recuerdos
Responder Con Cita
  #11  
Antiguo 07-04-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por rgstuamigo Ver Mensaje
Épale... escafandra... buen truco.
gracias por compartirlo..
Una anécdota
>
Aún recuerdo aquella vez cuando estaba empezando a dar mis primeros pasos en la programación en la universidad, que a cierto catedrático se le ocurrío preguntarnos en el examen :¿Hacer una funcion que diga si un número es par pero sin usar division(div) ni residuo(mod) ni cualquier otra función propia del lenguaje?
Lo cierto es que no recuerdo si lo resolví pero con la respuesta de escafandra creo que hubiera sido mas fácil... ... cómo no se me ocurrió...
Elemental, amigo, . Es como dividir por 2 pero sin hacerlo. Como preguntó tu profesor. En realidad son cosas que están en le mente de todos, si pensamos en binario.

Saludos.
Responder Con Cita
  #12  
Antiguo 07-04-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por Casimiro Notevi Ver Mensaje
El z-80, qué recuerdos
Otra forma más sencilla (sólo el ASM):
Código:
  POP BC
  POP HL
  LD IX, 0
  LD IY, 1
  RRC L
  JP C, SI
  PUSH IX
  JR FIN
SI:
  PUSH IY
FIN:
  PUSH BC
Es que acabo de recordar que el "shiftt" puede utilizar el acarreo.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #13  
Antiguo 07-04-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Válgame! Ésto sí que es rizar el rizo

Desempolvando el poco ensamblador que alguna vez supe, creo que se puede así ¿no?

Código Delphi [-]
function par(n: integer): boolean;
asm
  and ax,1
  dec ax
end;

// Saludos
Responder Con Cita
  #14  
Antiguo 07-04-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
El ejemplo de roman es una buena adaptación al asm del concepto de que el bit menos significativo nos dirá si es par.
Código:
bool par = !(n & 0x1);
Al tratarse de C, no podemos implementar el código tal cual lo expone roman para delphi. En C los parámetros se pasan en la pila por defecto (__cdecl). Así que tendremos que forzar el paso por registro (__fastcall) que es el estado por defecto de delphi:

Código:
bool __fastcall par(int n)
{
  asm{
  and ax,1
  dec ax
  }
}
Saludos.
Responder Con Cita
  #15  
Antiguo 07-04-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por escafandra Ver Mensaje
El ejemplo de roman es una buena adaptación al asm del concepto de que el bit menos significativo nos dirá si es par.
Je, je. En realidad "mi" código es el mismo que el tuyo aprovechando la "trampa" de que el parámetro se pasa en ax y ahí mismo se regresa el resultado.

Lo que pasa es que cuando vi el código de Ñuño (del que no entiendo ni jota), me dije que un and no podía ser tan difícil

// Saludos
Responder Con Cita
  #16  
Antiguo 30-04-2010
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
valla amigos he estado en superviviencia en un cayo, sin pc, ventilador, movil ni nada por el estilo jejeje, ni siquiera fosforera para encender algo jejejejejejejeje, y weno que he estado casi 3 semanas y al regresar veo cuan animado ha sido este hilo, jejejej, desempolvando los viejos recuerdos jajajajaja, gracias por su ayuda ;-)
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #17  
Antiguo 30-04-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Mmm, creo que te aplica la regla 14 de la otra guía de estilo

// Saludos
Responder Con Cita
  #18  
Antiguo 30-04-2010
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
Talking

Cita:
Empezado por roman Ver Mensaje
Mmm, creo que te aplica la regla 14 de la otra guía de estilo

// Saludos
Si jajajajajaja y creo que en este momento tambien se me aplicaba la 16 de la otra guía de estilo jajajajajajaja, pero wneo realmente no fue algo a lo que pudiese decir que no, no se si me entienden jejejejejejeje, pero weno ya estoy de vuelta y espero poder ayudar a los demas con mi poco conocimiento jejejeje HAAAA y al menos agradeci el esfuerzo jajajajajajajajaa
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como determinar la ip de un pc JoeyJordison Varios 1 14-01-2007 18:13:06
como determinar el navegador por defecto Velia API de Windows 4 13-11-2005 16:54:10
Como Determinar Monitor a Color ???? AGAG4 Varios 1 27-09-2005 05:07:03
Como determinar el tamaño de una base de dato ? Raptor Varios 4 06-08-2004 02:17:56
¿Como determinar el tipo de Impresora? jgutti Impresión 4 20-02-2004 01:11:36


La franja horaria es GMT +2. Ahora son las 07:05:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi