Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: razyhook en 5 Agosto 2015, 08:39 am



Título: ayuda con numeros pares, pero utilizando funciones
Publicado por: razyhook en 5 Agosto 2015, 08:39 am
buenas, en la universidad, me mandaron a hacer el programa de saber de un grupo de numero, cuales son los pares y publicarlos, pero utilizando las funciones. despues de varios intento lo logro, pero tengo un error, que me estan saliendo unos -2, intercalado del numero par.

esta es la codificación.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int pares(int numero1)
  5.  
  6. {
  7. int z;
  8.  
  9.  
  10. if(numero1%2==0)
  11.  
  12. {
  13. z=numero1;
  14. }
  15.  
  16.  
  17. return z;
  18. }
  19.  
  20. int main()
  21. {
  22. int n1, n2, c, resultado;
  23.  
  24. do
  25. {
  26. printf("\n ingrese el primer numero: ");
  27. scanf("%i", &n2);
  28. printf("\n por favor diga el numero final: ");
  29. scanf("%i", &n1);
  30.  
  31. if(n1<n2)
  32. {
  33. printf("\n opcion invalida, por favor, el numero final no puede ser mayor que el inicial");
  34. }
  35. }
  36. while(n1<n2);
  37.  
  38.  
  39. printf("\n los valores par son: ");
  40.  
  41. for(c=n2; c<=n1; c++)
  42. {
  43. printf("\n %i", pares(c));
  44. }
  45. }

Mod: Los códigos deben ir en etiquetas GeSHi



Título: Re: ayuda con numeros pares, pero utilizando funciones
Publicado por: engel lex en 5 Agosto 2015, 08:49 am
procura siempre inicializar las variables porque pueden contener basura...

Código:
int z = 0;


Título: Re: ayuda con numeros pares, pero utilizando funciones
Publicado por: razyhook en 6 Agosto 2015, 00:58 am
mira como sale:

(http://i61.tinypic.com/2m44wic.jpg)

hace el trabajo, pero ese menos 2, me esta afectando el programa :C

ya acomode la variable.

Código:
#include <stdio.h>
#include <stdlib.h>
 
int pares(int numero1)
 
{
int par;
 
 
if(numero1%2==0)
 
{
par=numero1;
}
 
 
return par;
}
 
int main()
{
int n1, n2, c, resultado;
 
do
{
printf("\n ingrese el primer numero: ");
scanf("%i", &n2);
printf("\n por favor diga el numero final: ");
scanf("%i", &n1);
 
if(n1<n2)
{
printf("\n opcion invalida, por favor, el numero final no puede ser mayor que el inicial");
}
}
while(n1<n2);
 
 
printf("\n los valores par son: ");
 
for(c=n2; c<=n1; c++)
{
printf("\n %i", pares(c));
}
}


Título: Re: ayuda con numeros pares, pero utilizando funciones
Publicado por: engel lex en 6 Agosto 2015, 01:15 am
simplemente ignoraste mi ultimo mensaje -.- así seguro avanzamos rapido


Título: Re: ayuda con numeros pares, pero utilizando funciones
Publicado por: A.I. en 6 Agosto 2015, 01:26 am
Es indiferente que inicialice esa variable, en lugar de devolver basura devolverá un 0, que aquí también es basura. De hecho esa variable sobra. Esa función no te devuelve sólo los números pares, ni dice si un número es par o impar. Tu función debería ser una función "booleana" que devuelva si el número que le pasas  es par o no..

Código
  1. int Es_Par(int numero){
  2.  
  3.  if(numero%2==0)
  4.  
  5.    {
  6.      return 1; //True
  7.    }
  8.  
  9.  return 0; //False
  10. }

Y luego adaptar la parte del main que imprime los números en función de lo que devuelva ésta.

Consejo: usa nombres descriptivos en las variables.


Título: Re: ayuda con numeros pares, pero utilizando funciones
Publicado por: engel lex en 6 Agosto 2015, 01:28 am
Es indiferente que inicialice esa variable, en lugar de devolver basura devolverá un 0, que aquí también es basura.


depende del compilador y los parámetros de compilación, normalmente es basura...


en resto en tal caso sería
Código
  1. int Es_Par(int numero){
  2.  
  3.  if(numero%2==0)
  4.  
  5.    {
  6.      return numero; //True
  7.    }
  8.  
  9.  return 0; //False
  10. }


Título: Re: ayuda con numeros pares, pero utilizando funciones
Publicado por: A.I. en 6 Agosto 2015, 01:38 am

depende del compilador y los parámetros de compilación, normalmente es basura...


en resto en tal caso sería
Código
  1. int Es_Par(int numero){
  2.  
  3.  if(numero%2==0)
  4.  
  5.    {
  6.      return numero; //True
  7.    }
  8.  
  9.  return 0; //False
  10. }

No me has entendido, yo decía que inicializarla a 0 es exactamente igual que dejarla con basura en este caso. El resultado va a ser un número arbitrario que no te sirve de nada, es decir basura.

El código que tu has escrito hace exáctamente lo mismo que el que yo he escrito, devuelve false (0) si no es par, o true (cualquier número que no sea 0) si es par. Sí no modifica la parte en la que se imprimen los números, que deberían ser sólo los pares, va a imprimir 0 en los impares en lugar de basura.



Título: Re: ayuda con numeros pares, pero utilizando funciones
Publicado por: razyhook en 6 Agosto 2015, 06:42 am
ok, con respecto a lo booleano

Código:
for(c=n2; c<=n1; c++)
{
printf("\n %i", Es_Par(c));
}
}

en este codigo tiene que aver una forma, no se si remplazo el for u otro comando para que publique, mi error lo tengo es en el printf :C, bueno segun lo veo asi.. pq el publicara el valor que tenga el residuo  :/


se que es molesto, pero soy novato en esto de funciones. disculpen mi ignoracia.


Título: Re: ayuda con numeros pares, pero utilizando funciones
Publicado por: engel lex en 6 Agosto 2015, 06:46 am
en tal caso, usa la función de A.I. y la parte de

Código
  1. for(c=n2; c<=n1; c++)
  2. {
  3. printf("\n %i", Es_Par(c));
  4. }
  5. }

modificala como

Código
  1. for(c=n2; c<=n1; c++)
  2. {
  3. if(Es_Par(c)==1){
  4. printf("\n %i",c);
  5. }
  6. }
  7. }


Título: Re: ayuda con numeros pares, pero utilizando funciones
Publicado por: A.I. en 6 Agosto 2015, 21:23 pm


Código
  1. if(Es_Par(c)==1){
  2. }


Código
  1. if(Es_Par(c))