[ Foro de C ]

14-Jan-2015 20:49
Invitado (PlanckPL)
1 Respuestas

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


14-Jan-2015 23:55
Nacho Cabanes (+84)

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