Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/12/2009, 07:26
nif
 
Fecha de Ingreso: diciembre-2009
Mensajes: 2
Antigüedad: 14 años, 5 meses
Puntos: 0
Busqueda Problema en operaciones con arrays dinamicos

He hecho un programa que al pasarle <npuntos> de una funcion, esta halla de una manera aproximada el punto de corte con el eje x.

El problema esta que en que justo detras del 2º bucle for, donde calculo las vars necesarias para hallar en punto de corte, saco por pantalla sus valores, y estos valores no tienen sentido.

O son 0, o son numeros elevadisimos, y no tengo ni idea de donde puede estar el error....

Aqui esta lo que he exo, (compila y se ejecuta)

Ya he comprobado que los valores se introducen bien en los arrays
Código c:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int main()
  6. {
  7.   int npuntos, i, z;
  8.   float j=0, m=0, n=0, a1, sx=0, sy=0, valor;
  9.   float *x, *fx;
  10.  
  11.   printf("introduzca el numero de valores que tiene de la funcion:\n");
  12.   scanf("%d", &npuntos);
  13.  
  14.   // Creamos vectores
  15.   x=(float *)malloc (npuntos*sizeof (float));
  16.   fx=(float *)malloc (npuntos*sizeof (float));
  17.  
  18.   //1º Introduciremos la informacion de los puntos en dos arrays, uno con los valores de x y otro con los de f(x)
  19.   for (i=0; i<npuntos; i++)
  20.   {
  21.       printf("\n\nIntroduzca el %dº valor de x y de f(x)", i+1);
  22.       printf("\nx=   ");
  23.       scanf("%f", &valor);
  24.       x[i]=valor;  
  25.       printf("\nf(x)=   ");
  26.       scanf("%f", &valor);
  27.       fx[i]=valor;
  28.   }
  29.    
  30.   for(i=0; i<npuntos; i++);
  31.   {
  32.            j = j + (x[i])*(fx[i]);    // j = sumatorio X*F(X)
  33.            sx = sx + x[i];          // sx = sumatorio de x
  34.            sy = sy + fx[i];         // sy = sumatorio de y
  35.            m = m + pow(x[i],2);     // m = sumatorio de x^2
  36.   }
  37.   printf("\nSumatorio x*f(x)= %f,\nSumatorio x= %f,\nSumatorio f(x)= %f,\nSumatorio (x^2) %f\n", j, sx, sy, m);  
  38.   a1 = (j - (sx*sy))/(m - pow(sx, 2));
  39.   printf("\n\nEl punto de corte con el eje x lo estimamos en %f", a1);
  40.  
  41.   // Destruimos vectores
  42.   free (x);
  43.   free (fx);      
  44.   getch();
  45. }

Última edición por nif; 24/12/2009 a las 10:13