一、前言(吐槽)
我真的不知道该说些什么好,其实也怪自己。老师将实验发下来,然后我就跟这着老师的实验任务做,实验word上用的什么流程图我就用那个流程图,然而我根据老师的流程图遍完了程序,怎么验算结果都不对,就开始找自己的问题,根本没去想流程图,后来才发现,是自己太年轻了,老师给的流程图错了,其实都怨自己,一味的去抄这个流程图,没有去分析这个流程图,这次狠狠的给我上了一课,浪费了好多时间。

二、算法流程图
具体流程图哪里错了,我就不告诉大家了,下面是错误的流程图,大家自己分析一下吧。挺简单的错误。

三、代码
#include <iostream>
using namespace std;
int main(){
bool flag = false;//用来判断是第几层循环
double X0,X1,r;
cout<<"请输入初值:"<<endl;
cin>>X0;
double e;
cout<<"请输入误差限:"<<endl;
cin>>e;
int m;
cout<<"请输入下山最大次数:"<<endl;
cin>>m;
int n;
cout<<"请输入迭代最大次数:"<<endl;
cin>>n;
int k=0;
int i=0;
while(true)
{
//说明下山成功进行迭代
if(r !=1)
{
cout<<"第"<<i<<"步下山因子:"<<r<<endl;
}
r = 1.0;
if(3*X0*X0-1 != 0)
{
while (true)
{
if(flag)
{
flag = false;
break;
}
X1 = X0 - r*(X0*X0*X0 - X0 - 1) / (3.0 * X0*X0 - 1);
if(abs(X1*X1*X1 - X1 - 1) > abs(X0*X0*X0 - X0 - 1))
{
cout<<"第"<<i<<"步下山因子:"<<r<<endl;
cout<<"--------------"<<endl;
i=i+1;
r=r*0.5;
if(i>=m)
{
cout<<"重新输入x0"<<endl;
return 0;
}
else
continue;
}
else
{
if (abs(X1 - X0) <e)
{
cout<<"近似根为:"<<X1<<endl;
return 0;
}
else
{
k=k+1;
X0=X1;
if(k>=n)
{
cout<<"迭代失败!"<<endl;
return 0;
}
else
{
flag = true;
continue;
}
}
}
}
} else
{
cout<<"奇异标志"<<endl;
return 0;
}
}
}
博主分享了一次因盲目跟随错误流程图导致的编程困境,通过自我反思和问题排查,最终发现并修正了流程图中的错误,强调了独立思考和流程图分析的重要性。
1万+

被折叠的 条评论
为什么被折叠?



