Programación General > C/C++

 Por qué no funciona???

(1/1)

johnniewalker_1:
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++ ---#include<stdio.h>#include<stdlib.h>#include<ctype.h> main(){int a, i, np=0, ni=0, sumap=0, sumai=0;float prp=0, pri=0;char cadena [6]; INICIO:       printf("Ingrese numero: ");fgets (cadena, sizeof (cadena), stdin);for(i=0; isdigit (cadena[i]); i++);if(i==0 || (cadena[i]!='n' && cadena[i])){printf ("nn");printf ("CARACTER INVALIDO!! Intente nuevamente... ");goto INICIO;} a = atoi (cadena); if(a==0){goto RESULTADO;} else if((a%2)==0){goto PARES;}else{goto IMPARES;} PARES: sumap=sumap+a;np=np+1;goto INICIO; IMPARES:            sumai=sumai+a;ni=ni+1;goto INICIO;   RESULTADO: if(np=0){prp=0;}else{prp=sumap/np;} if(ni=0){pri=0;}else{pri=sumai/ni;} printf("El promedio de los numeros pares es: %f",prp);printf("nn");printf("El promedio de los nueros impares es: %f",pri);printf("nn"); system ("pause");} 
Me pueden ayudar???

punteroNULO:
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 ---if(np==0) 
--- Código: C ---if(ni==0) 

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:
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.

Navegación

[0] Índice de Mensajes

Ir a la versión completa