[ Foro de C ]
Buenas, tratando hacer un programa en c que evalúe una función , dándole los puntos iniciales y finales y el espaciado entre los puntos de la evaluación. El problema es que compila bien pero se queda colgado cuando lo ejecutas. He aquí el código :) :
#include<stdio.h>
#include<math.h>
int main () {
int i,n;
float incx,xini,xend;
printf ("Introduzca el punto de inicio; \n");
scanf("%f",&xini);
printf ("Introduzca el punto final del intervalo; \n");
scanf("%f",&xend);
printf ("Introduzca el numero de particiones del intervalo \n");
scanf("%f",&n);
float v[n+1];
incx=(xend-xini)/n;
for (i=xini;i<xend;i=i+incx) {
v[n+1]=(exp(-1*i))/(1+pow(cos(i),2));
}
for (i=0;i<n;i++) {
printf ("x=%f \n",v[i]);
}
}
Gracias por vuestra ayuda
Normalmente, si se cuelga es porque algún bucle está mal, ya sea en la condición de salida o en el incremento.
En tu caso, veo dos fallos:
- Por una parte, no estás calculando los valores de cada punto, sino guardando siempre en una posición no válida, fuera del array:
v[n+1]=(exp(-1*i))/(1+pow(cos(i),2));
cuando debería ser
v[i]=(exp(-1*i))/(1+pow(cos(i),2));
- Por otra parte, "n" es un número entero, pero lo estás leyendo con "%f", como si fuera un número real, lo que posiblemente hará que el programa se comporte de forma incorrecta.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)