只学习了C#,现在有一个C++代码想转换成C#,求帮忙

johnny19960730 2016-10-21 05:03:24
#include<iostream>
#include<fstream>
#include<string>
#include<cmath>
//#include<sstream>
#include<vector>
#include<iomanip>
using namespace std;
//--------------------------------------------------------
string Ab(string);
int main(int argc,char**argv){
ifstream in(argv[1]);//ifstream in("scheme48.dat");
ofstream out(argv[2]);//ofstream out("s48.dat");
double minimal;
string s1,s2;
vector<int> no(10),gen(10);
vector<double> value(10);

in>>minimal;
in.ignore();//吸收回车符
out<<"The minimal is "<<minimal<<endl;
out <<setw(19)<<right<<"num"
<<setw(10)<<right<<"min"
<<setw(10)<<right<<"max"
<<setw(10)<<right<<"mean"
<<setw(12)<<right<<"fdev"<<endl;

for(;getline(in,s1)&&getline(in,s2);){
int Num_min=0,Gen_min=800,Gen_max=0,mean=0;
double fdev=0.0;
for(int i=0;i<10&&in>>no[i]>>gen[i]>>value[i];++i)
if(value[i]==minimal){
++Num_min;//求达最小值的次数
if(gen[i]<Gen_min)Gen_min=gen[i];//求最小代
if(gen[i]>Gen_max)Gen_max=gen[i];//求最大代
mean+=gen[i];
}
mean/=Num_min;//求达最小值代的平均值
for(int i=0;i<10;++i)//求方差
if(value[i]==minimal){
double x=(double)(gen[i]-mean);
fdev+=x*x;
}
fdev=sqrt(fdev/(Num_min-1));//求方差
out <<Ab(s1) //输出
<<setw(10)<<right<<Num_min
<<setw(10)<<right<<Gen_min
<<setw(10)<<right<<Gen_max
<<setw(10)<<right<<mean
<<setw(12)<<right<<fdev<<endl;
in.ignore();//吸收回车符
}
}//-------------------------------------------------------
string Ab(string str){//求缩写的函数
string s;
if(str.find("OnePointCrossover")!=-1)s="cO,";
else if(str.find("TwoPointCrossover")!=-1)s="cT,";
else if(str.find("UniformCrossover")!=-1)s="cU,";
else if(str.find("EvenOddCrossover")!=-1)s="cE,";

if(str.find("GARouletteWheelSelector")!=-1)s+="rW,";
else if(str.find("GATournamentSelector")!=-1)s+="rT,";
else if(str.find("GARankSelector")!=-1)s+="rR,";
else if(str.find("GAUniformSelector")!=-1)s+="rU,";
else if(str.find("GADSSelector")!=-1)s+="rD,";
else if(str.find("GASRSSelector")!=-1)s+="rS,";

if(str.find("GANoScaling")!=-1)s+="sN:";
else if(str.find("GALinearScaling")!=-1)s+="sL:";
else if(str.find("GAPowerLawScaling")!=-1)s+="sP:";
else if(str.find("GASigmaTruncationScaling")!=-1)s+="sT:";
else if(str.find("GASharing")!=-1)s+="sS:";
return s;
}//=========================================================
...全文
259 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
土土 2016-10-21
  • 打赏
  • 举报
回复
看看结帖率 再看看答案。。。
我叫小菜菜 2016-10-21
  • 打赏
  • 举报
回复
直接复制过去,95%语句不用改变。在vs中把红色波浪线的提示,修改即可。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧