Problema de calculo en arrays dinamicos
Publicado por Niff (2 intervenciones) el 26/12/2009 13:29:39
Holas, estoy teniendo un problema con un programilla bastante simple que lo unico que hace es implementar una formula.
No obstante, los resultados de las variables que obtengo es siempre el mismo y es incorrecto. Llevo unos dias intentando resolver el error, y no lo veo por ningun lado. Tiene que ser algo basico que desconozco. aqui les dejo el codigo, gracias de antemano
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int npuntos, i, z;
float j=0, m=0, n=0, a1, sx=0, sy=0, valor;
float *x, *fx;
printf("introduzca el numero de valores que tiene de la funcion:\n");
scanf("%d", &npuntos);
// Creamos vectores
x=(float *)malloc (npuntos*sizeof (float));
fx=(float *)malloc (npuntos*sizeof (float));
//1º Introduciremos la informacion de los puntos en dos arrays, uno con los valores de x y otro con los de f(x)
for (i=0; i<npuntos; i++)
{
printf("\n\nIntroduzca el %dº valor de x y de f(x)", i+1);
printf("\nx= ");
scanf("%f", &valor);
x[i]=valor;
printf("\nf(x)= ");
scanf("%f", &valor);
fx[i]=valor;
}
// ojo! HASTA AQUI TODO PERFECTO, HE COMPROBADO QUE LOS DATOS HAN SIDO INTRODUCIDOS CORRECTAMENTE, AQUI ES DONDE VIENE EL PROBLEMA, NINGUNA DE LAS 4 VARIABLES TOMAN EL VALOR QUE DEBERIAN, SIEMPRE TIENEN EL MISMO INDEPENDIENTEMENTE DE LOS VALORES DE X Y FX
for(i=0; i<npuntos; i++);
{
j = j + (x[i])*(fx[i]); // j = sumatorio X*F(X)
sx = sx + x[i]; // sx = sumatorio de x
sy = sy + fx[i]; // sy = sumatorio de y
m = m + pow(x[i],2); // m = sumatorio de x^2
}
printf("\nSumatorio x*f(x)= %f,\nSumatorio x= %f,\nSumatorio f(x)= %f,\nSumatorio (x^2) %f\n", j, sx, sy, m);
a1 = (j - (sx*sy))/(m - pow(sx, 2));
printf("\n\nEl punto de corte con el eje x lo estimamos en %f", a1);
// Destruimos vectores
free (x);
free (fx);
getch();
}
No obstante, los resultados de las variables que obtengo es siempre el mismo y es incorrecto. Llevo unos dias intentando resolver el error, y no lo veo por ningun lado. Tiene que ser algo basico que desconozco. aqui les dejo el codigo, gracias de antemano
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int npuntos, i, z;
float j=0, m=0, n=0, a1, sx=0, sy=0, valor;
float *x, *fx;
printf("introduzca el numero de valores que tiene de la funcion:\n");
scanf("%d", &npuntos);
// Creamos vectores
x=(float *)malloc (npuntos*sizeof (float));
fx=(float *)malloc (npuntos*sizeof (float));
//1º Introduciremos la informacion de los puntos en dos arrays, uno con los valores de x y otro con los de f(x)
for (i=0; i<npuntos; i++)
{
printf("\n\nIntroduzca el %dº valor de x y de f(x)", i+1);
printf("\nx= ");
scanf("%f", &valor);
x[i]=valor;
printf("\nf(x)= ");
scanf("%f", &valor);
fx[i]=valor;
}
// ojo! HASTA AQUI TODO PERFECTO, HE COMPROBADO QUE LOS DATOS HAN SIDO INTRODUCIDOS CORRECTAMENTE, AQUI ES DONDE VIENE EL PROBLEMA, NINGUNA DE LAS 4 VARIABLES TOMAN EL VALOR QUE DEBERIAN, SIEMPRE TIENEN EL MISMO INDEPENDIENTEMENTE DE LOS VALORES DE X Y FX
for(i=0; i<npuntos; i++);
{
j = j + (x[i])*(fx[i]); // j = sumatorio X*F(X)
sx = sx + x[i]; // sx = sumatorio de x
sy = sy + fx[i]; // sy = sumatorio de y
m = m + pow(x[i],2); // m = sumatorio de x^2
}
printf("\nSumatorio x*f(x)= %f,\nSumatorio x= %f,\nSumatorio f(x)= %f,\nSumatorio (x^2) %f\n", j, sx, sy, m);
a1 = (j - (sx*sy))/(m - pow(sx, 2));
printf("\n\nEl punto de corte con el eje x lo estimamos en %f", a1);
// Destruimos vectores
free (x);
free (fx);
getch();
}
Valora esta pregunta


0