求解立方根

来源:互联网 发布:淘宝联盟怎么使用教程 编辑:程序博客网 时间:2024/06/05 07:19
#include<bits/stdc++.h>using namespace std;double Fab(double n){    if(n<0)return -n;    return n;}int main(){    double n;    double start,end,mid;    while(cin>>n)    {        if(n<0)        {            n=-n;            cout<<"-";        }        else if(n>0)        {        }        else        {            cout<<"0.0"<<endl;            continue;        }        start=0,end=1000;        mid=(start+end)/2;        while(Fab(mid*mid*mid-n)>0.0001)        {            if(mid*mid*mid>n)            {                end=mid;            }            else            {                start=mid;            }            mid=(start+end)/2;        }        printf("%.1f\n",mid);    }    return 0;}/*#include<bits/stdc++.h>using namespace std;double Fab(double n){    if(n<0)return -n;    return n;}int main(){    double n;    double start,end,mid;    while(cin>>n)    {        if(n>0)        {          if(n>1)          {              start=0,end=1000;              mid=(start+end)/2;              while(Fab(mid*mid*mid-n)>0.001)              {                  if(mid*mid*mid>n)                  {                   end=mid;                  }                  else {                    start=mid;                  }                  mid=(start+end)/2;              }              printf("%.1f\n",mid);          }          else if(n<1)          {              start=0,end=1;              mid=(start+end)/2;              while(Fab(mid*mid*mid-n)>0.001)              {                  if(mid*mid*mid>n)                  {                   end=mid;                  }                  else {                    start=mid;                  }                  mid=(start+end)/2;              }              printf("%.1f\n",mid);          }          else {            cout<<"1.0"<<endl;          }        }        else if(n<0)        {           n=-n;           if(n>1)          {              start=0,end=1000;              mid=(start+end)/2;              while(Fab(mid*mid*mid-n)>0.001)              {                  if(mid*mid*mid>n)                  {                   end=mid;                  }                  else {                    start=mid;                  }                  mid=(start+end)/2;              }              printf("-%.1f\n",mid);          }          else if(n<1)          {              start=0,end=1;              mid=(start+end)/2;              while(Fab(mid*mid*mid-n)>0.001)              {                  if(mid*mid*mid>n)                  {                   end=mid;                  }                  else {                    start=mid;                  }                  mid=(start+end)/2;              }              printf("-%.1f\n",mid);          }          else {            cout<<"-1.0"<<endl;          }        }        else        {            cout<<"0.0"<<endl;        }    }    return 0;}*/