Pregunta:
Necesito ayuda por favor para resolver esta funcion en lenguaje C?
ICE MAN
2007-06-16 20:23:40 UTC
Sabiendo que 0 es par, es decir,
EsPar (0) = true
EsImpar (0) = false

y que la paridad de cualquier otro entero positivo es la opuesta que la del entero anterior,
desarrolle las funciones lógicas, mutuamente recursivas, EsPar y EsImpar, que se
complementen a la hora de averiguar la paridad de un entero positivo.
Ocho respuestas:
2007-06-16 20:45:26 UTC
Es muy simple, recuerda que que una función de recurrencia requiere dos pasos: El paso base y el paso inductivo.



El paso base es: Si el número es 0, entonces ya sabes que es par, no impar.



El paso inductivo es: Si el número no es cero, entonces es par si y sólo si el anterior es no es par.



Ahí lo tienes en lenguaje C, espero te sirva:



#include

#include



unsigned int par(unsigned int n);

unsigned int impar(unsigned int n);



/*La sentencia x = (P)? y : z; equivale a:

    if (P)

        x = y;

    else

        x = z;

*/



unsigned int par(unsigned int n){

    return (n == 0)? 1 : impar(n-1);

}



unsigned int impar(unsigned int n){

    return (n == 0)? 0 : par(n-1);

}



int main(void){

    unsigned int n;

    printf("n = " );

    scanf("%d", & n);

    printf("%d es %spar", n, (par(n))? "" : "im");

    system("PAUSE>>NUL");

    return 0;

}
2007-06-20 04:51:29 UTC
Brother no entiendo muy bien tu lógica pero puedes investigar código en www.programmersheaven.com o en www.lawebdelprogramador.com
DIOS
2007-06-19 13:42:52 UTC
bien si te dice que la paridad de un positivo es el opuesto del anterior te estan disiendo que si el anterior es impar entonces el es par.



bool Espar(int n)

{



if(n!=0)

{



return(EsImpar(n-1));



}

else

{

return(true);

}

}







bool EsImpar(int n)

{



if(n!=0)

{



return(EsPar(n-1));



}

else

{

return("false");

}

}
RompeRatones
2007-06-17 08:39:45 UTC
#define TRUE 0

#define FALSE !TRUE

int espar(int foo){

if (foo%2==0) {

return TRUE;

}

else{

return FALSE;



}



int esimpar(int bar){

return !espar(bar);

}
2007-06-17 03:54:34 UTC
Te propongo una solución muy simple (escribo el código y debajo te lo explico):



int esimpar(int);



inline int espar(int n)

{ return n == 0 || esimpar(n - 1); }



inline int esimpar(int n)

{ return n != 0 && espar(n - 1); }



¿Cuándo es par un número? Cuando es cero o su anterior es impar. Ya tenemos la función espar.

¿Cuándo es impar un número? Cuando sea distinto de cero y además su anterior sea par. Pues bien, ya tenemos las dos funciones definidas. Sencillo, ¿verdad?



Espero haberte ayudado. Si tienes dudas o no estás de acuerdo, contacta conmigo a través de mi perfil y lo arreglaré con mucho gusto. ¡Saludos!
diegex
2007-06-17 03:39:20 UTC
Quieres hacer dos funciones que te devuelvan true si es par y false si es impar algo asi?
2007-06-17 03:35:07 UTC
yo tampoco la entiendo...
psyco_heroe
2007-06-17 03:29:50 UTC
no entiendo la pregunta


Este contenido se publicó originalmente en Y! Answers, un sitio web de preguntas y respuestas que se cerró en 2021.
Loading...