Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema en operaciones con arrays dinamicos

Estas en el tema de Problema en operaciones con arrays dinamicos en el foro de C/C++ en Foros del Web. 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. ...
  #1 (permalink)  
Antiguo 24/12/2009, 07:26
nif
 
Fecha de Ingreso: diciembre-2009
Mensajes: 2
Antigüedad: 14 años, 4 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
  #2 (permalink)  
Antiguo 24/12/2009, 11:21
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema en operaciones con arrays dinamicos

¿Lo depuraste? Asi podrias encontrar donde empiezan a ir mal las cosas.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 24/12/2009, 12:59
nif
 
Fecha de Ingreso: diciembre-2009
Mensajes: 2
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Problema en operaciones con arrays dinamicos

Usando el debugger veo que calcula mal las variables j, sx, sy y m. Pero sigo sin saber por qué.

Tambien estoy viendo que estas variables siempre toman el mismo valor, debo estar cometiendo un error gordo, pero es la 1ª vez que trabajo con arrays dinamicos y no lo encuentro.

Última edición por nif; 24/12/2009 a las 13:11
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:02.