VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 687|回复: 4

用VC编写一个简单的对话框

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-3-21 14:00:01 | 显示全部楼层 |阅读模式
在对话框上建立两个按钮和两个ListBox数据显示框.
一个是从excel表中读出数据,并在一个ListBox里显示出excel表中的内容,另外一个按钮是从excel表中读出的数据,实现最小二乘法的计算,并把结果在另外一个ListBox中显示.
因为我是第一次利用Visual C++中的MFC框架,很多东西都不明白,在网上也看了不少的文章,可是总是出错.希望哪位老师给予帮助.
计算程序我已经些好了.附上
#include<stdio.h>
#include<math.h>
#define N  1000000
#define H  100
#define E   0.0001
float A[H][H];
float _A[H][H];
float x[H];
float x0[H];
float A_A[H][H];
float b[H];
float B[H];
int n;
int m;

float Sumax(int n, int i,float x0[])
{
  int j;
  float result;
  result=0;
  for(j=0;j<n;j++)
  result+=A_A[i][j]*x0[j];
  return result;
}
float Maxof(float x[],float x0[],int n)
{
  int i;
  float result;
  result=0;
  for(i=0;i<n;i++)
  {
          if(result<fabs(x[i]-x0[i]))
                  result=fabs(x[i]-x0[i]);
  }
  return result;
}
void Jacobiagrithm(float b[],int n,float x[],float e)
{
        int i,k;

        float R;
    for(i=0;i<n;i++)
                x0[i]=0;
        for(k=1;k<=N;k++)
        {
                for(i=0;i<n;i++)
                        x[i]=x0[i]+(b[i]-Sumax(n,i,x0))/A_A[i][i];
        R=Maxof(x,x0,n);
        if(R<=e)   return ;
                for(i=0;i<n;i++)
                        x0[i]=x[i];
        }

}
void Init ()
{  
   int i,j;
        float sum;
   scanf("%d",&m);
   scanf("%d",&n);
   for( i=0;i<m;i++)
           for(int j=0;j<n;j++)
                   scanf("%f",&A[i][j]);
   for(i=0;i<m;i++)
           scanf("%f",&b[i]);
  // for(i=0;i<m;i++)
  //            A[i][j]=1;
   for(i=0;i<n;i++)
           for(j=0;j<m;j++)
                   _A[i][j]=A[j][i];
   for(i=0;i<m;i++)
           for(j=0;j<m;j++)
           {
         sum=0;
                 for(int k=0;k<m;k++)
                 if(m>=n)
                         sum+=_A[i][k]*A[k][j];
                 else
             sum+=A[k][j]*_A[i][k];
                 A_A[i][j]=sum;
           }
    for(i=0;i<m;i++)
        {
           sum=0;
           for(int k=0;k<m;k++)
                   if(m>=n)
           sum+=_A[i][k]*b[k];
                   else
       sum+=b[k]*_A[i][k];
           B[i]=sum;
        }
   Jacobiagrithm(B,n,x,E);
   for(i=0;i<n;i++)
           printf("%f ",x[i]);
}
void main()
{
        Init();

}
回复

使用道具 举报

2

主题

20

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-6-27 16:00:01 | 显示全部楼层
MFC里是不可能出现main函数的
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-6-27 21:30:01 | 显示全部楼层
下面的那个程序是可以独立运行的.
我不知道怎么把它分解嵌入到MFC的对话框的Button命令下,希望老师给予成全.
回复

使用道具 举报

0

主题

14

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-6-28 20:15:01 | 显示全部楼层
用MFC
回复

使用道具 举报

0

主题

14

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-6-28 21:30:02 | 显示全部楼层
用MFC加两个按钮、两个listbox,然后把相应的函数加到相应的按钮事件中。只不过其中多了一个从文件读取数据并显示在listbox中,下面是往文件中写入数据的,上网搜一下,有从文件中读取数据的。
CString strValue;
strValue = "select xx from table ";
CStdioFile f;
if ( f.Open( "g:\\a.doc" ,CFile::modeCreate|CFile::modeWrite  ) )
{
   f.WriteString( strValue );
   f.Close();
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表