mi progtwig es tomar entradas de enteros y agregar la sum de números negativos impares incluso a números positivos, pero obtengo un error en tiempo de ejecución, ¿alguien puede encontrar un error?
#include int main(void) { int i,j,m,n,a[m],w; scanf("%d",&n); for(i=0;i<n;i++) { int s=0,d=0; scanf("%d",&m); for(j=0;j<m;j++) { scanf("%d",&a[j]); if((a[j]0)&&(a[j]%2==0)) d=d+a[j]; } printf("%d",s+d); } return 0; }
en tu código
a[m]
es erróneo El valor de m
se utiliza como no inicializado.
Para resolver su problema, puede usar la asignación de memoria dinámica para una variable int * a
basada en la entrada del usuario de m
.
Nota:
scanf()
para una entrada exitosa. C
ignora los espacios en blanco [en su mayoría]. Úsalos para hacer que tu código sea más legible para los humanos . Tu error es este: int a[m]
¿Qué esperas que sea el valor de m
? Cambie a a[256]
. O defina int *a
luego después de escanear m
: a = malloc( m * sizeof (int) )
.
Si tu quieres
a[m];
Desde C99 tienes VLA.
int m; scanf("%d",&m); int a[m];
Como veo en su código, está intentando escanear el tamaño de la matriz.
Alternativamente, puede tener una matriz dinámica
int *a = malloc(sizeof(int) * m);
@Sourav ya ha mencionado el motivo del accidente.
El valor de m
es indeterminado.
statement de la matriz causó el error de tiempo de ejecución, consulte este http://www.tutorialspoint.com/cprogramming/c_arrays.htm