用C编了个数学算法程序,移植到MFC后结果就不对了,为什么? 难道常用数学符号被重载了???
解决方案 »
- 最近手头缺钱,求兼职 vc++ windows驱动
- 请教关于 VARIANT 的知识
- 请问如何让子窗口在父窗口之外显示?
- Wtl中对话框的大小调整问题,大家看看吧,给点意见
- DLL编译的菜鸟问题!
- 关于sql数据库中日期型字段无法在CRecordView对象中显示的问题。
- 如何在光驱图标的右键弹出菜单中与“弹出“的同一格中加入一个“弹入“选项
- 分给的太快(paul2002)发现还有问题:动态库问题-Debug版调完后出错可以忽略,Release直接翘辫子
- 用ATL编写的复合控件怎样让它能插入到word中?
- OpenGl 初始化问题
- 高手进 (高分)!
- 请问谁知道哪里有tiff图像旋转的函数源代码?
#include "stdio.h"
#include"math.h"
main()
{ float a[2],b[20],c[20],d[20],e[20],f[20],p[20],q[20];
int i,j,n,m;
scanf("%d",&m);
printf("\n");
b[0]=1;
b[1]=1;
if(m>2)
{
for(i=2;i<m;i=i+2) if (i%4==0)
b[i]= 2 ;
else
b[i]=-2;
for(i=3;i<m;i=i+2) if ((i-1)%4==0)
b[i]= i ;
else
b[i]=-i;
}
for(i=0;i<m;i++)
printf("%f",b[i]); for(i=1;i<m+2;i++)
{
c[i]=0;
d[i]=0;
e[i]=0;
p[i]=0;
q[i]=0;
}
c[0]=1;
d[0]=b[0];
for(n=1;n<m;n++)
{ a[0]=0;
a[1]=1;
for(i=0;i<2;i++)
for(j=0;j<m/2+1;j++)
p[i+j]=p[i+j]+a[i]*c[j];
printf("\n") ;
for(i=0;i<m;i++)
q[i]=b[n]*d[i];
for(i=0;i<m;i++)
{
e[i]=p[i]+q[i];
c[i]=d[i];
d[i]=e[i];
p[i]=0;
} }
printf("\n");
for(i=0;i<m;i++)
{if (e[i]!=0)
{if(i==0)
printf("%4.2f",e[i]);
else
{if (e[i-1]!=0)
printf("+%7.2fx(%d)",e[i],i) ;
else
printf("%7.2fx(%d)",e[i],i);
}
}
}
printf("\n");
for(i=1;i<m+2;i++)
{
c[i]=0;
d[i]=0;
f[i]=0;
p[i]=0;
q[i]=0;
}
c[0]=0;
d[0]=1;
for(n=1;n<m;n++)
{ a[0]=0;
a[1]=1;
for(i=0;i<2;i++)
for(j=0;j<m/2;j++)
p[i+j]=p[i+j]+a[i]*c[j];
for(i=0;i<m;i++)
q[i]=b[n]*d[i];
for(i=0;i<m;i++)
{
f[i]=p[i]+q[i];
c[i]=d[i];
d[i]=f[i];
p[i]=0;
} }
printf("----------------------------------");
printf("\n");
for(i=0;i<m/2+1;i++)
{if (f[i]!=0)
{if(i==0)
printf("%4.2f",f[i]);
else
{if (f[i-1]!=0)
printf("+%7.2fx(%d)",f[i],i) ;
else
printf("%7.2fx(%d)",f[i],i);
}
}
}
printf("\n");
getch();}
void CMathDispView::OnExp()
{
// TODO: 在此添加命令处理程序代码
CExpDlg mode;
if (mode.DoModal()==IDOK)
nn=atoi(mode.m);
exp(nn);
}void CMathDispView::exp(int m)
{
CString str;
float a[2],b[20],c[20],d[20],e[20],f[20],p[20],q[20];
int i,j,n;
b[0]=1;
b[1]=1;
if(m>2)
{
for(i=2;i<m;i=i+2) if (i/4==0)
b[i]= 2 ;
else
b[i]=-2;
for(i=3;i<m;i=i+2) if ((i-1)/4==0)
b[i]= i ;
else
b[i]=-i;
}
for(i=0;i<m;i++)
for(i=1;i<m+2;i++)
{
c[i]=0;
d[i]=0;
e[i]=0;
p[i]=0;
q[i]=0;
}
c[0]=1;
d[0]=b[0];
for(n=1;n<m;n++)
{ a[0]=0;
a[1]=1;
for(i=0;i<2;i++)
for(j=0;j<m/2+1;j++)
p[i+j]=p[i+j]+a[i]*c[j];
for(i=0;i<m;i++)
q[i]=b[n]*d[i];
for(i=0;i<m;i++)
{
e[i]=p[i]+q[i];
c[i]=d[i];
d[i]=e[i];
p[i]=0;
} }
for(i=0;i<m;i++)
{if (e[i]!=0)
{if(i==0){
str.Format("%4.2f",e[i]);
m_str1+=str;
}
....
for(i=0;i<m/2+1;i++) // 这里i<m/2+1
{if (f[i]!=0)
{if(i==0)
printf("%4.2f",f[i]);
else
{if (f[i-1]!=0)
printf("+%7.2fx(%d)",f[i],i) ;
else
printf("%7.2fx(%d)",f[i],i);
}
}
}
在MFC程序中:
for(i=0;i<m;i++) //这里是i<m,不知和上面的m是否一样?
{if (e[i]!=0)
{if(i==0){
str.Format("%4.2f",e[i]);
m_str1+=str;
}