Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: talbarb en 29 Mayo 2015, 21:13 pm



Título: Programa que cuenta impares
Publicado por: talbarb en 29 Mayo 2015, 21:13 pm
Hola buenas a todos, soy nueva en esto y queria ayuda con un pequeño programilla. Necesito que me cuente los numeros impares que hay entre el numero 16 y un numero que introduzca el usuario. Lo que tengo hecho es esto:

Código
  1. #include<stdio.h>
  2.  
  3. int main(void)
  4. {
  5. int numero, contador, impares=0;
  6.  
  7. printf("Introduzca un numero: ");
  8. scanf("\n%d", &numero);
  9.  
  10. for(contador=16; contador<=numero; contador++);
  11. {
  12. while ((contador%2)!=0);
  13. {
  14. impares++;
  15.  
  16. }
  17.  
  18. }
  19. printf("Hay %d numeros impares entre el 16 y %d", impares,numero);
  20. return(0);
  21. }

El problema es que siempre me dice que solo hay un numero impar.

Muchas gracias de antemano.

Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Programa que cuenta impares
Publicado por: engel lex en 29 Mayo 2015, 21:30 pm
esto es un error

Código
  1. while ((contador%2)!=0);
  2. {
  3. impares++;
  4.  
  5. }

ya que si contador es impar, el entrará al ciclo, sumará 1 al impar, preguntará ¿contador es impar?, de ser cierto, repite...

es un ciclo infinito

tienes algunas formas de hacer esto...

la forma matematica, una sola linea

Código
  1. int impares = (numero_ingresado-16)/2 + numeroingresado%2;

el ciclo especifico (solo pasa por los que quieres contar)
Código
  1. int impares=0;
  2. for(contador=16;contador<=numero_ingresado;contador+=2){//a+=b, es lo mismo que a=a+b
  3.  impares++;
  4. }

y el ciclo con if

Código
  1. int impares=0;
  2. for(contador=16;contador<=numero_ingresado;contador++{
  3.  if(contador%2!=0){
  4.    impares++;
  5.  }
  6. }
  7.