C++问题 — 计算机在化学中的应用 ,请求高手给我修改下这个程序,但意思不变

来源:百度知道 编辑:UC知道 时间:2024/09/21 12:32:57
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

Smooth(double *x,double *y,double *a,int n,int m,double *dt1,double *dt2,double *dt3);

void main()
{
int i,n=20,m=4;
char colx,coly;
double *x,*y,*a,dt1,dt2,dt3;
/*分别为x,y,a分配存贮空间*/
x = new double[n];
y = new double[n];
a = new double[n];

FILE *fp;

fp = fopen("data.txt","r");

if (fp==NULL)
{
printf("\n文件打开失败!\n");
exit(0);
}
fscanf(fp,"%c %c",&colx,&coly);
/*读取文件中的x,y值*/
for(i=0;i<n;i++)
{
fscanf(fp,"%lf%lf",&x[i],&y[i]);
//printf("%lf% lf\n",x[i],y[i]);
}

/*调用拟合函数,求出各多项式的参数值,并求出拟合多项式与数据点偏差的平方和dt1,绝对值之和dt2,绝对值最大值dt3*/
Smooth(x,y,a,n,m,&dt1,&dt2,&dt3);
for(i=0;i<m;i++)
printf("%lf\n",a[i])

好像程序并不完整,C语言中使用malloc分配内存,free释放内存,还有打开的文件一定要在程序退出前关闭。
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

void Smooth(double *x,double *y,double *a,int n,int m,double *dt1,double *dt2,double *dt3);

void main()
{
int i,n=20,m=4;
char colx,coly;
double *x,*y,*a,dt1,dt2,dt3;
/*分别为x,y,a分配存贮空间
x = new double[n];
y = new double[n];
a = new double[n];
*/
x = (double *)malloc(n * sizeof(double));
y = (double *)malloc(n * sizeof(double));
a = (double *)malloc(n * sizeof(double));

FILE *fp;

fp = fopen("data.txt","r");

if (fp==NULL)
{
printf("\n文件打开失败!\n");
exit(0);
}
fscanf(fp,"%c %c",&colx,&coly);
/*读取文件中的x,y值*/
for(i=0;i<n;i++)
{
fscanf(fp,"%lf%lf",&x[i],&y[i]