这个公式相当复杂分子是num,分母是den,公式中分母上有根,所以我在sqrrt()中插入了den,但sqrrt只接受双倍

#include<stdio.h>
#include<conio.h>
#include<math.h>
#define LEN 11
// for the following set of x and y find r by the formula ..
float sum(float arr[]);
void main(void)
{    int i;
    float x[]={43.22,39.87,41.85,43.23,40.06,53.29,53.29,54.14,49.12,40.71,55.15};
    float y[]={102.43,100.93,97.43,97.81,98.32,98.32,100.07,97.08,91.59,94.85,94.6};
    float num,den[LEN],r[LEN],xy[LEN],x2[LEN],y2[LEN];
    for(i=0;i<LEN;i++)
    {
        x2[i]=x[i]*x[i];
        y2[i]=y[i]*y[i];
        xy[i]=x[i]*y[i];
    }
    num=sum(xy)-sum(x)*sum(y);
    for(i=0;i<LEN;i++)
    {
        den[i]=((LEN*sum(x2)-(sum(x))*(sum(x)))*(LEN*sum(y2))-(sum(y2))*(sum(y2)));
        r[i]=num /sqrt(den);  /*<----------the problem is here-----> */

    }
    printf("%f",r);
    getch();
}
float sum(float arr[])
    {
    int i;
    float total=0;
    for(i=0;i<=LEN;i++)
    {
        total+=arr[i];
    }
    return total;
    }

最佳答案

出于无聊,我修改了你的代码。它仍然是丑陋和极低效率,但编译和应该工作。我会离开你或其他人让它体面。

#include <stdio.h>
#include <math.h>
#define LEN 11


// for the following set of x and y find r by the formula ..
float sum(float arr[]);
int main(void)
{ int i;
      float x[]={43.22,39.87,41.85,43.23,40.06,53.29,53.29,54.14,49.12,40.71,55.15};
      float y[]={102.43,100.93,97.43,97.81,98.32,98.32,100.07,97.08,91.59,94.85,94.6};


      float num,den,r[LEN],xy[LEN],x2[LEN],y2[LEN];
      for(i=0;i<LEN;i++)
          {
                x2[i]=x[i]*x[i];
                y2[i]=y[i]*y[i];
                xy[i]=x[i]*y[i];
              }
      num=LEN*sum(xy)-sum(x)*sum(y);
      den = (LEN*sum(x2)) - sum(x)*sum(x);

      float alpha = sum(y)/LEN - (num/den)*sum(x)/LEN;

      printf("beta = %f,  alpha = %f\n", num/den, alpha);
      for(i=0;i<LEN;i++)
          {
            float term = y[i] - alpha - (num/den)*x[i];
            r[i] = (term*term);

                printf("%f",r[i]);
          }
}
float sum(float arr[])
  {
      int i;
      float total=0;
      for(i=0;i<=LEN;i++)
          {
                total+=arr[i];
              }
      return total;
      }

09-28 09:02