• Miércoles 20 de Noviembre de 2024, 08:20

Autor Tema:  Por qué no funciona???  (Leído 1195 veces)

johnniewalker_1

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Por qué no funciona???
« en: Jueves 23 de Septiembre de 2010, 04:45 »
0
Hola...
soy nuevo en el foro asi como en esto de la programacion. Tengo el siguiente codigo pero no se cual es el error:

Código: C++
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<ctype.h>
  4.  
  5. main(){
  6. int a, i, np=0, ni=0, sumap=0, sumai=0;
  7. float prp=0, pri=0;
  8. char cadena [6];
  9.  
  10. INICIO:
  11.        
  12. printf("Ingrese numero: ");
  13. fgets (cadena, sizeof (cadena), stdin);
  14. for(i=0; isdigit (cadena[i]); i++);
  15. if(i==0 || (cadena[i]!='n' && cadena[i]))
  16. {
  17. printf ("nn");
  18. printf ("CARACTER INVALIDO!! Intente nuevamente... ");
  19. goto INICIO;
  20. }
  21.  
  22. a = atoi (cadena);
  23.  
  24. if(a==0)
  25. {
  26. goto RESULTADO;
  27. }
  28.  
  29. else if((a%2)==0)
  30. {
  31. goto PARES;
  32. }
  33. else
  34. {
  35. goto IMPARES;
  36. }
  37.  
  38. PARES:
  39.  
  40. sumap=sumap+a;
  41. np=np+1;
  42. goto INICIO;
  43.  
  44. IMPARES:  
  45.          
  46. sumai=sumai+a;
  47. ni=ni+1;
  48. goto INICIO;  
  49.  
  50. RESULTADO:
  51.  
  52. if(np=0)
  53. {
  54. prp=0;
  55. }
  56. else
  57. {
  58. prp=sumap/np;
  59. }
  60.  
  61. if(ni=0)
  62. {
  63. pri=0;
  64. }
  65. else
  66. {
  67. pri=sumai/ni;
  68. }
  69.  
  70. printf("El promedio de los numeros pares es: %f",prp);
  71. printf("nn");
  72. printf("El promedio de los nueros impares es: %f",pri);
  73. printf("nn");
  74.  
  75. system ("pause");
  76. }
  77.  

Me pueden ayudar???

punteroNULO

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: Por qué no funciona???
« Respuesta #1 en: Viernes 24 de Septiembre de 2010, 11:37 »
0
El problema está en las líneas 52 y 61. En vez de una compración estás realizando una asignación con lo que a continuación hay una división por cero.

Lo correcto:
Código: C
  1. if(np==0)
  2.  
Código: C
  1. if(ni==0)
  2.  


por otro lado yo no utilizaria tanto goto, que no ayuda a seguir el flujo de la ejecución (con tanto salto se puede perder el hilo), y utilizar la estructura while, por ejemplo.

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Por qué no funciona???
« Respuesta #2 en: Viernes 24 de Septiembre de 2010, 21:26 »
0
Y mucho mejor si te acostumbras a poner la constante antes, asi: "0==np". De esta forma si escribes "0=np" el compilador podrá avisarte de tu error.