我刚刚实现一个数据发掘算法的简单程序,是用C写的,非常的简单,要应用于firefox得插件中,但firefox自带的编译只认C++程序,我对C++一点都不懂,希望有高人,耐心的人帮我改下面程序一小小部分或某一个函数成为C++程序,之后我照猫画虎把他完成。。。万望帮助!!!
唉!本来同组的人说给他C程序,然后他有办法让firefox认。结果,他说搞不定,就剩1天了。。。(身在国外,真不想丢人啊)唔唔唔,有时间有耐心的人,帮我改一点点,1行,两行都行,在此先谢过了~~~~~
程序如下:
#include <stdio.h>
#include <stdlib.h>
#define e 0.5
int *Append(int *x, int *w, int y,int len);
int Interet(int *x,int *w,int y,int len);
int MatrixMult(int *x, int *y, int len); /*calculer (W.X) retourner un tableau */
int *MatrixPlus(int *x, int *y, int len); /*calculer Wt+TtVt retourner un valeur */
int *MatrixSingleMult(int* x,int y, int len); /*calculer y.X retourner un tableau */
int MoCarre(int *x, int len); /*calculer ||Vt||.||Vt|| */
int *Append(int *x, int *w, int y,int len)
{
int *xt=x; int *wt=w; int yt=y;
int res;int *vt;int Tt;
int tmp=yt*MatrixMult(xt,wt,len);
if(tmp>0)
{ res=0; }
else
{ res=e-tmp; };
vt=MatrixSingleMult(xt,yt,len);
Tt=res/MoCarre(vt,len);
if(res>0)
{ return MatrixPlus(wt,MatrixSingleMult(vt,Tt,len),len); }
else
{ return wt; }
};
int Interet(int *x,int *w,int y,int len)
{ int *xt=x;int *wt=w;int ya=y;
int tmp;
tmp=MatrixMult(xt,wt,len);
if(tmp>0)
{ ya=1; }
else
{ ya=-1; };
return ya;
};
int MatrixMult(int *x, int *y, int len)
{ int i;int r=0;
for(i=0;i<len;i++)
{ r=r+x[i]*y[i]; };
return r;
};
int *MatrixSingleMult(int* x,int y, int len)
{ int i; int r[100];
for(i=0;i<len;i++)
{ r[i]=x[i]*y; };
return r;
};
int *MatrixPlus(int *x, int *y, int len)
{ int i;int r[100];
for(i=0;i<len;i++)
{ r[i]=x[i]+y[i]; };
return r;
};
int MoCarre(int *x, int len)
{ int i;int r=0;
for(i=0;i<len;i++)
{ r=r+x[i]*x[i]; };
return r;
};
main()
{
int a[10];int b[10];int l=15;
int i;int y=-1;
for(i=0;i<l;i++)
{
a[i]=b[i]=i*2/3;
};
for(i=0;i<l;i++)
{
printf("Append[%d] %d\n",i,Append(a,b,y,l)[i]);
}
printf("Interet= %d\n",Interet(a,b,y,l));
};