Te recomiendo que en una linia de codigo solo pongas o float (en este caso double) o int, porque sino te va a dar mas de un dolor de cabeza, te lo digo por experiencia. Si teorico es double, k tambien ponlo a double, aunque nunca lo sea. Luego el 1.0 puedes quitarlo, el compilador ya reconoce que el 1 en realidad es 1.0000.
Luego haz lo mismo con la n. Si suma3 y suma2 son double pon la n tambien a double.
Si la n y la k las vas a utilizar para otra cosa y te resulta mas comodo trabajar con enteros, puedes hacer un cast. Justo antes de escribir la k y la n pon (double). Lo mismo con pow.
Ahora que me fijo en los printf has puesto lf... Sinceramente no se que es, prueba a poner solo una f.
El codigo quedaria asi:
Código:
char elec,nombre_archivo[20];
int vector[10000];
int i,n,k,j;
int M[10][10];
FILE *pf;
double suma,suma2,suma3,suma4,teorico;
//test de uniformidad
suma=0;
for(i=0; i<=n; i++)
{
suma += (double)pow(vector[i],k);
suma2=(suma);
suma3=(suma2)/(double)n;
}
teorico=(1/((double)k+1));
printf("\nResultado del programa es %.12f y valor teorico es %.4f\n\n",suma3,teorico);
}
A ver si asi te funciona.