关于 类中的 流 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!jijijij

Lokioo 2003-03-29 12:47:46
#include<iostream>
#include<fstream>
#include<vector>
#include<string>
using namespace std;
class core
{
private:
ifstream in;//error 为什么在 agr 中无法使用???
vector<int>::iterator pos;
public :

core(const string &str){ifstream in(str);}//error !!!
~core(){in.close();}
void agr();
private:

void add(vector<int>& ,vector<int>&);
void sub(vector<int>& ,vector<int>&);
void mul(vector<int>&, vector<int>&);
void div (vector<int>&, vector<int>&);
};
void core::add(vector<int>& s1,vector<int>& s2)
{
cout<<endl;
for(int i=0;i<s2.size()-s1.size();i++)
cout<<" ";

for(pos=s1.begin();pos!=s1.end();pos++)
cout<<*pos;
cout<<endl;


cout<<'+';
for(int i=1;i<s1.size()-s2.size();i++)
cout<<" ";
for(pos=s2.begin();pos!=s2.end();pos++)
cout<<*pos;
cout<<endl;
cout<<"-------------------"<<endl;
vector<int>tmp;
int ii=s1.size();
int jj=s2.size();
while((ii>=0) &&(jj>=0)){
tmp.push_back(s1[ii--]+s2[jj--]);
}
while(ii>=0)
tmp.push_back(s1[ii--]);
while(jj>=0)
tmp.push_back(s2[jj--]);
for(pos=tmp.begin();pos!=tmp.end();pos++)
cout<<*pos;
cout<<endl;
}

void core::agr()
{
int n;
vector<int>s1;
vector<int>s2;
in>>n;
cout<<"the number of n=="<<n<<endl;
char y;
in>>y;
while((y>='0')&&(y<='9')){
s1.push_back(static_cast<int>(y)-48);
in>>y;
}
in>>y;
switch(y)
{
case '+': in>>y;
while((y>='0')&&(y<='9')){
s2.push_back(static_cast<int>(y)-48);
in>>y;
}
add(s1,s2);
break;
case'-':
break;
case'*':
break;
}
}

int main()
{ const string str="1103.txt";
core a(str);// 为什么文件无法打开
a.agr();
return 0;
}
//上面我已把出现问题的地方标出,,,谢谢帮助
...全文
113 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lokioo 2003-03-29
  • 打赏
  • 举报
回复
class core
{
private:
ifstream in;
vector<int>::iterator pos;
const string str;
public :

core(const string & s):str(s){ifstream in(str.c_str());//!!!!
~core(){in.close();}
void agr();
};
void core::agr()
{
ifstream in(str.c_str());//为什么文件还需要打开(我在构造函数中已经打开了?????)
..........
}

//难道这样封装文件 开关 不行!

//积极积极急急急急急!!!!!
Lokioo 2003-03-29
  • 打赏
  • 举报
回复
#include<iostream>
#include<fstream>
#include<vector>
#include<string>
using namespace std;
vector<int>s1;
vector<int>s2;
vector<int>::iterator pos;
void add(vector<int>& s1,vector<int>& s2)
{
cout<<endl;
cout<<' ';
if((s2.size()-s1.size())>0)
for(int i=0;i<s2.size()-s1.size()+1;i++)
cout<<" ";

for(pos=s1.begin();pos!=s1.end();pos++)
cout<<*pos;
cout<<endl;


cout<<'+';
if(s1.size()>s2.size())
for(int i=1;i<s1.size()-s2.size();i++)
cout<<" ";
for(pos=s2.begin();pos!=s2.end();pos++)
cout<<*pos;
cout<<endl;
cout<<"--------------"<<endl;
vector<int>tmp;
int ii=s1.size()-1;
int jj=s2.size()-1;
int t;

while((ii>=0) && (jj>=0)){
t=s1[ii--]+s2[jj--];
tmp.push_back(t%10);
if(t>=10){
if(ii>=0)
s1[ii]+=t/10;
else if(jj>=0)
s2[jj]+=t/10;
else
tmp.push_back(t/10);
}


}


while(ii>=0)
tmp.push_back(s1[ii--]);
while(jj>=0)
tmp.push_back(s2[jj--]);
cout<<' ';
for(pos=tmp.end()-1;pos!=tmp.begin()-1;pos--)// 问题点!!!!!!!!!
cout<<*pos;
cout<<endl;
}

void agr()
{
ifstream in("1103.txt");
int n;
in>>n;
cout<<"the number of n=="<<n<<endl;
string y;
in>>y;
int i=0;
while((y[i]>='0')&&(y[i]<='9')&&(y[i]!=NULL)){
s1.push_back(static_cast<int>(y[i++])-48);
}

switch(y[i++])
{
case'+':
while((y[i]>='0')&&(y[i]<='9')&&(y[i]!=NULL)){
s2.push_back(static_cast<int>(y[i++])-48);
}
add(s1,s2);
break;
case'-':
break;
case'*':
break;
}
}

int main()
{

agr();
return 0;
}
Lokioo 2003-03-29
  • 打赏
  • 举报
回复
呵呵~~~~~~~~~~~~~~~~

这道体的函数错误 多多 ,我没用类 进行了 调试..都快哭了 先列几个::
<error 1>::for(int i=0;i<s2.size()-s1.size();i++) //超界 如i<0 死循环
<error 2>::按位加计算 没有考虑进位位!!!!
<error 3>::vector 使用边界混乱,如 t=s1.size()--->s1[t] //越界!!!!
<error 4>::文件读取 无法判断 回车键!!!!!!造成无法完成题目要求!!!
<error 5>::ifstream 使用没有了解内部机制

//以上 这些问题在调试中解决... 只是对vector.push_back() 还有些迷惑
//贴出改正程序 希望大家帮我看看 add 中的 tmp 的push_back() 为什么边界有变化!!!
  • 打赏
  • 举报
回复
谢谢,chinajiji,其实是他提醒我的,只要
core(const string &str):in(str.c_str()){}就可以了,不用在生成一个临时对象了:)
chinajiji 2003-03-29
  • 打赏
  • 举报
回复
我来up一下.
  • 打赏
  • 举报
回复
对不起,标错了,改的是这行:)
for(int j=1;j<s1.size()-s2.size();j++)
  • 打赏
  • 举报
回复
void core::add(vector<int>& s1,vector<int>& s2)
{
cout<<endl;
for(int i=0;i<s2.size()-s1.size();i++)
cout<<" ";

for(pos=s1.begin();pos!=s1.end();pos++) //忘了说这里我也改了,因为在vc
cout<<*pos; //里,在for中定义的变量是可以
cout<<endl; //超出作用域的,如果你用bcb
//就没有这个问题

cout<<'+';
for(int j=1;j<s1.size()-s2.size();j++)
cout<<" ";
for(pos=s2.begin();pos!=s2.end();pos++)
cout<<*pos;
cout<<endl;
  • 打赏
  • 举报
回复
#include<iostream>
#include<fstream>
#include<vector>
#include<string>
using namespace std;
class core
{
private:
ifstream in;//error 为什么在 agr 中无法使用???
vector<int>::iterator pos;
public :

core(const string &str):in(ifstream(str.c_str())){}//改了
~core(){in.close();}
void agr();
private:

void add(vector<int>& ,vector<int>&);
void sub(vector<int>& ,vector<int>&);
void mul(vector<int>&, vector<int>&);
void div (vector<int>&, vector<int>&);
};
void core::add(vector<int>& s1,vector<int>& s2)
{
cout<<endl;
for(int i=0;i<s2.size()-s1.size();i++)
cout<<" ";

for(pos=s1.begin();pos!=s1.end();pos++)
cout<<*pos;
cout<<endl;


cout<<'+';
for(int j=1;j<s1.size()-s2.size();j++)
cout<<" ";
for(pos=s2.begin();pos!=s2.end();pos++)
cout<<*pos;
cout<<endl;
cout<<"-------------------"<<endl;
vector<int>tmp;
int ii=s1.size();
int jj=s2.size();
while((ii>=0) &&(jj>=0)){
tmp.push_back(s1[ii--]+s2[jj--]);
}
while(ii>=0)
tmp.push_back(s1[ii--]);
while(jj>=0)
tmp.push_back(s2[jj--]);
for(pos=tmp.begin();pos!=tmp.end();pos++)
cout<<*pos;
cout<<endl;
}

void core::agr()
{
int n;
vector<int>s1;
vector<int>s2;
in>>n;
cout<<"the number of n=="<<n<<endl;
char y;
in>>y;
while((y>='0')&&(y<='9')){
s1.push_back(static_cast<int>(y)-48);
in>>y;
}
in>>y;
switch(y)
{
case '+': in>>y;
while((y>='0')&&(y<='9')){
s2.push_back(static_cast<int>(y)-48);
in>>y;
}
add(s1,s2);
break;
case'-':
break;
case'*':
break;
}
}

int main()
{ const string str="1103.txt";
core a(str);// 为什么文件无法打开
a.agr();
return 0;
}
内容概要:本文系统研究了Picard迭代法在非线性常微分方程参数估计中的应用,深入阐述了该方法的数学原理及其在参数辨识中的收敛性与稳定性优势。通过构建最小化误差的目标函数,并结合数值积分技术,采用迭代方式逐步逼近系统的真实参数值,有效解决了非线性动态系统中因缺乏解析解而难以进行精确建模的问题。文中提供了完整的Matlab代码实现,涵盖模型定义、迭代求解、参数更新与结果可视化等关键环节,增强了方法的可操作性与工程实用性。研究通过典型非线性系统案例验证了算法的有效性,展示了其在科学计算与工程建模中的良好适应性与推广潜力。; 适合人群:具备常微分方程理论、数值分析基础及Matlab编程能力,从事系统建模、参数辨识、动力学仿真等相关方向的研究生、科研人员和工程技术开发者。; 使用场景及目标:①解决实际工程中非线性微分方程模型的未知参数估计问题;②深入理解Picard迭代法在科学计算中的实现机制与数值特性;③为学术论文复现、科研项目开发或课程设计提供可运行、易调试的技术方案与代码参考。; 阅读建议:建议读者结合文中的数学推导与Matlab代码逐行分析,重点关注迭代程、目标函数构造与数值积分的耦合实现,通过修改模型结构或噪声条件进行扩展实验,以深化对算法鲁棒性与适用边界的理解。配套资源可通过指定公众号和网盘链接获取,推荐同步学习以加速科研进程。
内容概要:本文详细介绍了一种基于多尺度集成极限学习机(Extreme Learning Machine, ELM)的回归方法,并提供了完整的Matlab代码实现。该方法通过构建多尺度特征表示与集成学习机制,有效提升了ELM在处理非线性、高维复杂数据时的预测精度与模型鲁棒性,特别适用于时间序列回归任务。文档不仅阐述了算法的核心原理与技术程,还系统展示了其在风电功率预测等工程场景中的应用潜力。同时,文中附带了丰富的科研仿真案例集合,涵盖智能优化算法、深度学习、信号处理、电力系统调度等多个前沿方向,体现了多学科交叉融合的技术优势与实践价值。; 适合人群:具备一定Matlab编程能力,从事科学研究或工程应用的研究生、科研人员及工程技术开发者,尤其适合专注于机器学习、智能算法优化、新能源预测与电力系统建模等相关领域的专业人员。; 使用场景及目标:①用于风电、光伏、负荷等时间序列数据的高精度回归预测任务;②为科研工作者提供可复现的多尺度集成ELM模型代码框架,支持快速算法验证与二次开发;③满足实际工程项目中对高效建模、实时预测与智能决策的技术需求。; 阅读建议:建议读者结合所提供的Matlab代码进行动手实践,深入理解多尺度特征构造与集成策略的设计思想,同时可参考文档中其他相关算法案例进行横向比较与综合应用,以提升整体科研创新能力。

24,850

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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