Saber si un número es par

Iniciado por Shell Root, 8 Marzo 2011, 20:58 PM

0 Miembros y 1 Visitante están viendo este tema.

Edu

PEro si un int / int da otro int y los int no tienen decimales, por eso lo pense asi yo

edit: con eso q dices shell root convenceras mas al profesor je

criskapunk

@Shell Root

Si. O también podrías utilizar div para realizar la división entera. Como yo estaba escribiendo el pseudocódigo en PSeInt tuve que usar esa función, porque no tiene ningún operador matemático para eso :P

Akai

De todas formas, el pseudocódigo es por así decirlo, un lenguaje intermedio entre el lenguaje habitual (informal) y otro formal (lenguaje de programación).

Trabajar en pseudocódigo no implica que no puedas dar un tipo a las variables, o utilizar funciones, simplemente que lo que tu estás escribiendo, no está en el ámbito de formalidad de un lenguaje concreto.

(O eso tengo entendido yo)

Si tu utilizas un 5 en pseudocódigo, como diferencias si es un entero, o en cambio es un número con decimales (5.) o el caracter '5' o la cadena "5"?


79137913

#23
HOLA!!!

Ejemplo bien simple en VB6:

Código (vb) [Seleccionar]
Private Sub Form_Load()
   For x = 0 To 100
       If (x And 1) Then
           Debug.Print "no_es_par " & x
       Else
           Debug.Print "si_es_par " & x
       End If
   Next
End Sub


Y pseudo codigo con eso que decis de comprobar si es entera la division:
Si Entero(Numero / 2) = Numero / 2 Entonces Imprimir "Es Par"
(creo que te referias a eso)

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

Valkyr

Cita de: criska en 10 Marzo 2011, 01:53 AM
Me resultó curioso este ejercicio y encontré otra forma para hacerlo (No se me ocurría :P).

Se sabe que todo número positivo elevado a cualquier número entero da un resultado positivo. En cambio, si el número es negativo, el resultado dará positivo en caso de que el exponente sea par, y negativo si el exponente es impar. Entonces podríamos hacer lo siguiente:

Código (python) [Seleccionar]
n = int(raw_input("Ingrese un numero: "))

if (-1) ** n > 0:
    print "Es par"
else:
    print "Es impar"


Un saludo :P



La solución que decía criska es valida, ¿porque no la usas?, además no usas ni bucles, ni mod, ni aritmética a nivel de bit...nada de nada, solo haces una potencia. En pseudocódigo quedaría algo así (cada profesor, cada alumno, y cada persona puede usar un pseudocódigo distinto, yo te lo pongo a mi forma):

PROGRAMA
ENTERO numero;
INICIO_PROGRAMA
               LEER(numero);
               SI (-1)^numero > 0 ENTONCES
                              ESCRIBIR("El número es par");
               SI_NO
                              ESCRIBIR("El número es impar");
               FIN_SI
FIN_PROGRAMA


LEER(numero) es como si pidiese el número al usuario, y ESCRIBIR() es como si escribiese en pantalla.

Espero que te haya servido, saludos.

mauriciodelos

#25
Las respuestas que te dieron son muy buenas, pero yo me sumo a la idea de lo mas simple y entendible.

INICIO_PROGRAMA

entero NUMERO

ingresar(NUMERO)

si (NUMERO dividido 2 multiplicado por 2 es igual a NUMERO) entonces escribir( es par)
si_no escribir (es impar)

FIN_PROGRAMA

------------------------------

//Si al número impar lo dividís por 2, te va a dar un resultado con coma flotante, lo único que tenés que hacer es declarar el NUMERO como entero, para que cuando lo vuelvas a multiplicar, lo hagas solamente por la parte entera.

------------------------------

Ni siquiera tenés que usar números con coma flotante, ni mod, ni bucles ni nada, definís todo dentro del if.
Igualmente, elegí la que realmente comprendas, la que después sepas explicar y aplicar.

;D
El fanatismo es la máxima estupidez humana.