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
Ir a la versión completa