Numero par/ impar en lenguaje C

S

Buenas
Quiero hacer un if que tenga una sentencia en la cual si el numero es par pase una cosa y si es impar otra.Se una forma de hacerlo que os la indicare aqui abajo pero me gustaria saber escribirlo de otra forma,saber otra alternativa.¿Os sabeis otra forma?

if(j%2==0) {
pasa alguna cosa}
else
if(j%2!)=1{
pasa alguna cosa}

B

Por ejemplo:

int x = num /2
int y = x *2

if(num==y) {
//Par
}
else {
//Impar
}

1 respuesta
S

#2 ¿Se puede usar / en vez de % ?

3 respuestas
Fyn4r

#3
/ calcula la división entera
% el módulo (el resto de la división entera vamos)

1 respuesta
allmy

#3 No. Bueno si, pero lo lías mucho más.

Pseudo:

a = n / 2
a*2 == n -> par

B

Por ejemplo

int par = 0;

while(num > 0) num -= 2;
if(num == 0){ //par

}else{ //impar

}

Aunque no se para que querrias hacer esto pero bueno xDD.

B

#3 Basicamente es lo que dice #4. Calculas la division entera primero y luego comparas valores. Si son el mismo es que el valor era par, sino pues es impar

S

Tengo nociones muy basicas la verdad y algunos de los ejemplos que me habeis indicado no los he llegado a entender.Pero creo que no me he expresado bien y algunos ejemplos no son lo que quiero.Al poner
if (algo que indique cuando sea par){
printf(algo)}
if (algo que indique que sea impar){
printf(algo)}

Quiero saber que poner donde pongo algo que indique que sea par/impar en esos parentesis

2 respuestas
cabron

#8

¿por que no te vale lo que has puesto en #1? por que es la típica forma de hacerlo, usando %

Además no tienes que comprobar las dos cosas (si es par o si es impar) ya que una cosa excluye a la otra. Si no es par ya va implícito que es impar ( o al revés)

1 respuesta
B

#8 no me acuerdo muy bien de si hay diferencia entre signed int y unsigned int pero podrias hacer

if(!(num & 1)){ //par

}else{ //impar

}

Pruebalo con unos cuantos numeros positivos y negativos que no sea que la este liando xD.

1 respuesta
S

#9 Si me sirve,pero me gustaria aprender distintas formas de hacerlo

paulvandyk

#define esPar(x) (!((x) % 2))

#10 Si es negativo puede que no funcione si no recuerdo mal. Puede que dependa de la arquitectura y no sea portable

(x % 2 == 0) es la forma que yo lo haría en cualquier lenguaje y jamás perdería el tiempo en pensar otra forma.

1 respuesta
B

#12 yo tampoco xD pero supongo que seran algun tipo de deberes o le habran dicho que quizas sea la pregunta que le caiga en el examen.

Frankicia

if ( j & 1)
impar
else
par

diría que no está puesto

Zerokkk

Y digo yo, no sería más fácil...:

if (num % 2 == 0){

//par

}else{

//impar

}

Vamos, realizar el módulo me parece lo más cómodo para comprobar la paridad.

1 respuesta
S

Muchas gracias a todos de verdad.Me ha sido de gran utilidad.

B

#15 Si lees #1, esta preguntado una forma alternativa al modulo para comprobar la paridad

Y

Tal y como lo describes si un nº es impar pasaría una cosa, y si es par otra.

b = false;
for (x=1;x<=99999;x++)
if (!b)
es impar
b = true;
else
es par
b = false
Fin If
Fin For

jalamoNNN

Hay dos formas de comprobar que un número es par/impar.
Una de ellas es aplicando la función AND entre el número que quieres comprobar y 1 (el último bit de los números pares siempre es 0, y en los impares siempre es 1):
if (num & 0x1) //impar
else //par
La otra es el módulo de la división por 2:
if (num % 2) //par
else //impar
Aunque los compiladores siempre convierten la segunda forma en la primera, porque hacer una operación AND es mucho menos costoso en tiempo de cómputo que una división.
No hay más formas de hacerlo.

Y

Se me ocurre otra rayada xD

Primero crear un array con las terminaciones de los números pares.
pares(0,2,4,6,8);
y ahora solo tienes que pedir el nº y comprobar que la última cifra se encuentra entre los nº pares.

FOR (i=0;i<4;i++)
if (numero.length-1 == pares(i)) Entonces
Es par
Sino
Es impar
Fin IF
FIN FOR

S

Gracias a todos por la ayuda.Ya tengo alternativas mas que suficientes.Se puede cerrar el tema

Usuarios habituales

Tags