| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 670 人关注过本帖
标题:[求助]求一段源代码
只看楼主 加入收藏
红影
Rank: 1
等 级:新手上路
威 望:2
帖 子:659
专家分:0
注 册:2006-2-22
结帖率:66.67%
收藏
 问题点数:0 回复次数:5 
[求助]求一段源代码
我需要一端源代码
梅西算法的VB源代码
希望好心人提供
不胜感激
搜索更多相关主题的帖子: 源代码 
2006-04-05 10:57
红影
Rank: 1
等 级:新手上路
威 望:2
帖 子:659
专家分:0
注 册:2006-2-22
收藏
得分:0 

这里是我在网上搜到的梅西算法的C++实现:
有没有人能看懂,帮我把它改成VB的啊?
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <fstream>
using namespace std;

int main(int argc, char *argv[])
{
typedef vector<bool> MyArray; file://定义自己的数据类
MyArray a; file://状态数组 ,用来保存给定的m序列?
vector<int>l; file://线性移位寄存器的级数数组
MyArray temp;
vector<MyArray> f; file://为线性移位寄存器对应的多项式
int N =0;
ifstream infile("input.txt"); file://从文件中读取数据
ofstream outfile("output.txt"); file://把结果写入文件中。
if(!infile)
{
cout << "Aata file input.txt is not ready! Please check it"<<endl;
exit (-1);
}
string strTemp;
infile>>strTemp; file://读入N
// cout << strTemp <<endl;
N = atoi(strTemp.c_str());
infile>>strTemp; file://读入序列
for( int i = 0 ;i<N; ++i)
{
a.push_back(strTemp[i]=='1'); file://把序列保存
}
file://cout << strTemp <<endl;
int n=0;
l.push_back(0);
temp.push_back(1); file://形成f0
f.push_back(temp); file://把f0加到f数组中。
do{
int dn =0;
for (int i = 0;i<=l[n];++i)
{
dn += f[n][i]*a[n-i]; file://计算dn
}
dn = dn % 2; file://取余
// cout <<"d"<<n<<"= "<<dn <<endl;
int isum = 0;
for (int i =0;i<=n ;++i)
{
isum +=l[i]; file://判定是不是所有的ln都等于0就是把所有的ln加起来看是不是零
}
if( dn == 0) file://如果dn =0
{
f.push_back(f[n]); file://fn+1 = fn
l.push_back(l[n]); file://ln+1 = ln
}
else if (!isum) file://所有的ln都是零
{
temp.clear();
for(int i =0;i<n+2;++i)
{
temp.push_back(0);
}
temp[0] = 1;
temp[n+1] = 1;
f.push_back(temp);
l.push_back(n+1);
}
else file://lm<lm+1 = ...=ln
{
int m =0;
for (int i = n;i>=0; --i)
{
if(l[i]<l[n])
{
m= i; file://找到m
break;
}
}//end for
temp.clear();//把临时的目的数组清空
for (int i =0;i<n-m;++i)
{
temp.push_back(0); file://fm乘x^n-m次方就是在多项式数组前面插入n-m个零
}
temp.insert(temp.end(),f[m].begin(),f[m].end()); file://构造fm*x^n-m
vector<bool> ft; file://用来保存两个多项式相加的结果
int len = max(temp.size(),f[n].size()); file://取出多项式系数最大值
ft.insert(ft.begin(),len,0); file://把目的数组填入len个零初始化
for (int i = 0 ;i<temp.size(); ++i)
{
ft[i] = temp[i]; file://先把temp的值拷贝到ft目的数组中。
}
for (int i = 0 ;i<f[n].size(); ++i) file://把两个多项式加到一起
{
if(ft[i] != f[n][i]) file://如果多项式的对应系数不等,加后系数是1
ft[i] = 1;
else
ft[i] = 0; file://如果多项式的对应系数相等,加后系数是0
}
f.push_back(ft); file://f[n+1] = ft
len = max(l[n],n+1-l[n]);
l.push_back(len);//找L(n+1)=max(ln,n+1-ln)
}
/* cout <<"f(x)=1" ; file://如需要可以输出中间结果
for (int i=1; i<f[n].size();++i) file://常数项已经是1了,故忽略第一个
{
if (f[n][i])
cout<<"+X^"<<i;
}
cout <<endl;
getchar();
*/
if(n>=N-1) break;
++n;
}while(1);
if(outfile) file://输出文件合法
{
outfile <<"ln="<<l.back()<<endl; file://输出ln
outfile <<"f(x)=1" ; file://输出结果多项式,并赋常数项为1
for (int i=1; i<f[N].size();++i) file://常数项已经是1了,故忽略第一个
{
if (f[N][i])
outfile<<"+X^"<<i;
}
outfile<< endl;
cout <<"结果已经同时写入到output.txt文件中了。"<<endl;
}
cout << "本算法的最终结果是:"<<endl;
cout <<"ln="<<l.back()<<endl; file://输出ln
cout <<"f(x)=1" ; file://输出结果多项式,并赋常数项为1
for (int i=1; i<f[N].size();++i) file://常数项已经是1了,故忽略第一个
{
if (f[N][i])
cout<<"+X^"<<i;
}
cout<< endl<<endl<<endl;
cout << "请按任意健退出!" ;
getchar();
return 0;
}



生命中,不断有人离开和进入。于是,看见的,看不见了;记住的,遗忘了。
2006-04-05 19:39
红影
Rank: 1
等 级:新手上路
威 望:2
帖 子:659
专家分:0
注 册:2006-2-22
收藏
得分:0 
是不是真的很难?
没有人会啊?

生命中,不断有人离开和进入。于是,看见的,看不见了;记住的,遗忘了。
2006-04-06 18:45
盖茨他爹
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:5255
专家分:0
注 册:2005-5-3
收藏
得分:0 
俺们嘎达怎么看都不像VB
2006-04-06 18:56
红影
Rank: 1
等 级:新手上路
威 望:2
帖 子:659
专家分:0
注 册:2006-2-22
收藏
得分:0 
我说了那是C++的,
我需要把它改写成VB的,
谁会啊?

生命中,不断有人离开和进入。于是,看见的,看不见了;记住的,遗忘了。
2006-04-07 09:48
红影
Rank: 1
等 级:新手上路
威 望:2
帖 子:659
专家分:0
注 册:2006-2-22
收藏
得分:0 
" border="0" />[url=http://wpa.]点击这里给我发消息[/url]

生命中,不断有人离开和进入。于是,看见的,看不见了;记住的,遗忘了。
2006-04-22 12:51
快速回复:[求助]求一段源代码
数据加载中...
 
   



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

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