| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 470 人关注过本帖
标题:新人+新手请教,如何把一个WIN32应用的CPP合并到一个MFC里去?
取消只看楼主 加入收藏
holylightsj
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-8-16
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:3 
新人+新手请教,如何把一个WIN32应用的CPP合并到一个MFC里去?
新手+新人前来寻求各位大大帮助
我要做一个程序,内容是获取点坐标信息最小二乘法拟合成曲线然后画图
下面是最小二乘法拟合曲线的程序(WIN32应用)
效果是把包含点信息的TXT文件拖进去,求出拟合多项式的系数
然后画图的程序(MFC程序)我也能运行了。
效果是把一个多项式画出来
但是因为基础不好,我完全不清楚怎样把两个合并起来
请问有没有擅长这方面的朋友来指点下我?谢谢啦
我C++初学,很多术语都不太了解,希望可以说具体点
#include<iostream>
#include<fstream>
#include<math.h>
#include <iomanip>
using namespace std;
double max(double array[4]);
double gt(double x[11],double y[11]);
double GS(double a[4][4],double b[4],double e[],double s[]);
void  main()
{
   double a[11]={1,1,1,1,1,1,1,1,1,1,1},b[11],c[11],d[11],e[11],f[11],g[11];
       int i;
    char strl[11];
    cout<<"\n输入文件名:";
    cin>>strl;
    ifstream fin(strl);
    if (!fin)
    {cout<<"cant open"<<strl<<endl;exit(1);}
    for(i=0;i<11;i++)//读入n个数据点
    {fin>>b[i];fin>>e[i];//左列写入x,右列写入y
        c[i]=b[i]*b[i];//x平方
    d[i]=b[i]*b[i]*b[i];}//x立方
    fin.close();//结束输入
  f[0]=gt(a,a);f[1]=gt(a,b);f[2]=gt(a,c);f[3]=gt(a,d);f[4]=gt(b,b);f[5]=gt(b,c);f[6]=gt(b,d);
  f[7]=gt(c,c);f[8]=gt(c,d);f[9]=gt(d,d);g[0]=gt(a,e);g[1]=gt(b,e);g[2]=gt(c,e);g[3]=gt(d,e);
  double array[4][4]={{f[0],f[1],f[2],f[3]},{f[1],f[4],f[5],f[6]},{f[2],f[5],f[7],f[8]},{f[3],f[6],f[8],f[9]}};//生成4*4矩阵
  GS(array,g,e,b);
/*
        array[4][4]*      x[i]      =      g[i]
1     x     x^2   x^3      a0               y
x     x^2   x^3   x^4      a1               y*x
x^2   x^3   x^4   x^5      a2               y*x^2
x^3   x^4   x^5   x^6      a3               y*x^3
x^n为11个x的n次方之和  多项式系数     y*x^n为11个y*x^n的和
主对角线优势,使用高斯-赛德尔迭代法求解x[i]
*/
}
double gt(double x[11],double y[11])
{   
    double sum=0;
    for(int i=0;i<11;i++)
       sum=x[i]*y[i]+sum;
     return sum;
}//定义gt,累加之和。
double GS(double a[4][4],double b[4],double e[11],double s[11])
//     GS(  array[4][4]      g[i]         e[i]         b[i]);
{
    double c[4]={0};
    double x0[4]={0};
    int i,k,j;
    double x[4];//多项式系数
    double r,sum=0;
    for(k=1;;k++)
    {
        for(i=0;i<4;i++)
        {
            for(j=0;j<4;j++)
            {
                sum=a[i][j]*x0[j]+sum;
            }
              x[i]=x0[i]+(b[i]-sum)/a[i][i];
              c[i]=fabs(x[i]-x0[i]);//精度
              x0[i]=x[i];
              sum=0;
        }
            r=max(c);
            if(r<0.00000001)//给定精度要求满足则结束迭代
             {
                cout<<"解得的三次拟合曲线系数为:\n";
                for(i=0;i<4;i++)
                cout<<"A"<<i<<"="<<x[i]<<endl;
                break;
            }
   
    }
    return 0;
}
double max(double array[4])
    {
        double a=array[0];
        int i;
        for(i=0;i<4;i++)
        {if(a<array[i])
                a=array[i];}
    return a;}
最后得出的多项式系数就是x[i]里的四个数。

MFC程序文件比较多,我也不知道贴什么好,就截个图。图里那个f(float x)多项式对应上面那个程序拟合出的系数。
程序合并.rar (34.4 KB)

求把他们合并起来,即把包含点坐标的TXT文档拖进去,然后直接得出拟合曲线图。
谢谢啦。
Draw.rar (1.91 MB)
这个是画图的程序

[ 本帖最后由 holylightsj 于 2013-8-16 12:55 编辑 ]
搜索更多相关主题的帖子: include 多项式 朋友 如何 
2013-08-16 12:04
holylightsj
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-8-16
收藏
得分:0 
能自顶一下么。。。。。
2013-08-16 12:55
holylightsj
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-8-16
收藏
得分:0 
求高手指点啊。。。。
2013-08-17 20:28
holylightsj
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-8-16
收藏
得分:0 
以下是引用yuccn在2013-8-17 21:35:33的发言:



把文件增加进去,在用到的地方include一下就可以调用里面的函数了

我是新手,不太清楚具体怎么做。。。。。。
添加现有项知道,但是之后具体怎么调用拟合函数就不清楚了
2013-08-18 20:55
快速回复:新人+新手请教,如何把一个WIN32应用的CPP合并到一个MFC里去?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025807 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved